rfc9922v1.md   rfc9922.md 
skipping to change at line 55 skipping to change at line 55
code: 35000 code: 35000
country: France country: France
email: mohamed.boucadair@orange.com email: mohamed.boucadair@orange.com
- -
fullname: Daniel King fullname: Daniel King
organization: Lancaster University organization: Lancaster University
country: United Kingdom country: United Kingdom
email: d.king@lancaster.ac.uk email: d.king@lancaster.ac.uk
normative: normative:
W3C.XML1.0:
target: https://www.w3.org/TR/2008/REC-xml-20081126/
title: "Extensible Markup Language (XML) 1.0 (Fifth Edition)"
date: 2008-11-26
author:
- name: Tim Bray
role: editor
- name: Jean Paoli
role: editor
- name: C. M. Sperberg-McQueen
role: editor
- name: Eve Maler
role: editor
- name: Francois Yergeau
role: editor
rc:
W3C Recommendation
informative: informative:
I-D.ietf-netmod-eca-policy: I-D.ietf-netmod-eca-policy:
display: NETMOD-ECA-POLICY display: NETMOD-ECA-POLICY
I-D.ietf-netmod-rfc8407bis: I-D.ietf-netmod-rfc8407bis:
display: YANG-GUIDE display: YANG-GUIDE
I-D.ietf-ntp-ntpv5: I-D.ietf-ntp-ntpv5:
display: NTPv5 display: NTPv5
skipping to change at line 95 skipping to change at line 78
I-D.ietf-opsawg-ucl-acl: I-D.ietf-opsawg-ucl-acl:
display: YANG-NAC display: YANG-NAC
I-D.ietf-tvr-schedule-yang: I-D.ietf-tvr-schedule-yang:
display: YANG-SCHEDULE display: YANG-SCHEDULE
I-D.liu-netmod-yang-schedule: I-D.liu-netmod-yang-schedule:
display: YANG-CONFIG-SCHEDULE display: YANG-CONFIG-SCHEDULE
W3C.XML1.0:
target: https://www.w3.org/TR/2008/REC-xml-20081126/
title: "Extensible Markup Language (XML) 1.0 (Fifth Edition)"
date: 2008-11-26
author:
- name: Tim Bray
role: editor
- name: Jean Paoli
role: editor
- name: C. M. Sperberg-McQueen
role: editor
- name: Eve Maler
role: editor
- name: Francois Yergeau
role: editor
rc:
W3C Recommendation
--- abstract --- abstract
<!-- [rfced] FYI - We will do the following when we convert the file to RFCXML: <!-- [rfced] FYI - We will do the following when we convert the file to RFCXML:
- compact the spacing of the definition lists in Sections 8.1 and 8.2 - compact the spacing of the definition lists in Sections 8.1 and 8.2
--> -->
<!--[rfced] Note that we have updated the short title, which appears in the
running header in the PDF output, as follows. Please let us know of any
objections.
Original:
Common Schedule YANG
Current:
YANG Scheduling
This document defines common types and groupings that are meant to be used This document defines common types and groupings that are meant to be used
for scheduling purposes, such as events, policies, services, or resources based on for scheduling purposes, such as events, policies, services, or resources based on
date and time. For the sake of better modularity, the YANG module includes a date and time. For the sake of better modularity, the YANG module includes a
set of recurrence-related groupings with varying levels of representation set of recurrence-related groupings with varying levels of representation
(i.e., from basic to advanced) to accommodate a variety of requirements. (i.e., from basic to advanced) to accommodate a variety of requirements.
It also defines groupings for validating requested schedules and reporting schedul ing statuses. It also defines groupings for validating requested schedules and reporting schedul ing statuses.
--- middle --- middle
# Introduction {#intro} # Introduction {#intro}
skipping to change at line 136 skipping to change at line 126
{{?I-D.ietf-opsawg-ucl-acl}}, {{?I-D.ietf-opsawg-scheduling-oam-tests}}, {{?I-D.ietf-opsawg-ucl-acl}}, {{?I-D.ietf-opsawg-scheduling-oam-tests}},
and {{?I-D.ietf-tvr-schedule-yang}}. The module includes a set of reusable groupings that and {{?I-D.ietf-tvr-schedule-yang}}. The module includes a set of reusable groupings that
are designed to be applicable for scheduling purposes, such as events, policies, are designed to be applicable for scheduling purposes, such as events, policies,
services, or resources based on date and time. It also defines groupings for validati ng services, or resources based on date and time. It also defines groupings for validati ng
requested schedules and reporting scheduling statuses. requested schedules and reporting scheduling statuses.
This document does not make any assumption about the nature of actions that are This document does not make any assumption about the nature of actions that are
triggered by the schedules. Detection and resolution of any schedule conflicts triggered by the schedules. Detection and resolution of any schedule conflicts
are beyond the scope of this document. are beyond the scope of this document.
<!--[rfced] To avoid awkward hyphenation, may we update this sentence to read as
"objects managed by MIB"?
Original:
Section 5 discusses the relationship with the Management Information
Base (MIB) managed objects for scheduling management operations
defined in [RFC3231].
Perhaps:
Section 5 discusses the relationship with the objects managed by
Management Information Base (MIB) for scheduling management operations
defined in [RFC3231].
{{sec-mib}} discusses the relationship with the Management Information Base (MIB) {{sec-mib}} discusses the relationship with the Management Information Base (MIB)
managed objects for scheduling management operations defined in {{!RFC3231}}. managed objects for scheduling management operations defined in {{!RFC3231}}.
{{usage}} describes a set of examples to illustrate the use of the common schedule gr oupings ({{sec-grp}}). {{usage}} describes a set of examples to illustrate the use of the common schedule gr oupings ({{sec-grp}}).
{{sec-ext}} provides sample modules to exemplify how future modules can use the exten sibility {{sec-ext}} provides sample modules to exemplify how future modules can use the exten sibility
provisions in the "ietf-schedule" module ({{sec-schedule}}). Also, {{ex-framework}} p rovides provisions in the "ietf-schedule" module ({{sec-schedule}}). Also, {{ex-framework}} p rovides
an example of using the "ietf-schedule" module for scheduled use of a resources frame work (e.g., {{?RFC8413}}). an example of using the "ietf-schedule" module for scheduled use of a resources frame work (e.g., {{?RFC8413}}).
# Conventions and Definitions # Conventions and Definitions
skipping to change at line 194 skipping to change at line 170
iCalendar: iCalendar:
: Refers to Internet Calendaring per {{!RFC5545}}. : Refers to Internet Calendaring per {{!RFC5545}}.
Interval: Interval:
: Refers to an integer that specifies the interval at which a recurrence rule repeats . Values are taken from the "INTERVAL" rule in {{Section 3.3.10 of !RFC5545}}. : Refers to an integer that specifies the interval at which a recurrence rule repeats . Values are taken from the "INTERVAL" rule in {{Section 3.3.10 of !RFC5545}}.
: For example, "1" means every second for a secondly rule, every minute for a minutel y rule, every hour for an hourly rule, etc. : For example, "1" means every second for a secondly rule, every minute for a minutel y rule, every hour for an hourly rule, etc.
System: System:
: Refers to an entity that hosts a schedule that is managed using the YANG module def ined in this document. : Refers to an entity that hosts a schedule that is managed using the YANG module def ined in this document.
"schedule-status-*" refers to any of "schedule-status", "schedule-status-with-time-zo
ne", and "schedule-status-with-name".
# Module Overview {#sec-overview} # Module Overview {#sec-overview}
## Features {#sec-features} ## Features {#sec-features}
The "ietf-schedule" data model defines the recurrence-related groupings using The "ietf-schedule" data model defines the recurrence-related groupings using
a modular approach. To that aim, a variety of representations of recurrence a modular approach. To that aim, a variety of representations of recurrence
groupings ranging from basic to advanced (iCalender-like) are defined. groupings ranging from basic to advanced (iCalender-like) are defined.
To allow for different options, two features are defined in the data model: To allow for different options, two features are defined in the data model:
* "basic-recurrence" * "basic-recurrence"
* "icalendar-recurrence" * "icalendar-recurrence"
Refer to {{sec-aug}} and {{features}} for the use of these features. Refer to {{sec-aug}} and {{features}} for the use of these features.
## Types and Identities {#sec-types} ## Types and Identities {#sec-types}
The "ietf-schedule" module ({{sec-schedule}}) defines the following identities: The "ietf-schedule" module ({{sec-schedule}}) defines the following identities:
* "schedule-type": Indicates the type of schedule. The following types are defined so far: * "schedule-type": Indicates the type of schedule. The following types are defined so far:
+ one-shot: The schedule will trigger an action that has either the duration sp ecified as 0 or the end time specified as the same as the start time, and then the sc hedule will disable itself ({{Section 3.3 of !RFC3231}}). + one-shot: This type is used for a schedule that triggers an action that has e ither the duration specified as 0 or the end time specified as the same as the start time, and then the schedule will disable itself ({{Section 3.3 of !RFC3231}}).
+ period: This type is used for a period-based schedule consisting of either (1 ) a start and end or (2) a start and positive duration of time. If neither an end nor a duration is indicated, the period is considered to last forever. + period: This type is used for a period-based schedule consisting of either (1 ) a start and end or (2) a start and positive duration of time. If neither an end nor a duration is indicated, the period is considered to last forever.
+ recurrence: This type is used for a recurrence-based schedule. A recurrence m ay be periodic (i.e., repeat over the same period, e.g., every five minutes) or not ( i.e., repeat in a non-regular manner, e.g., every day at 8 and 9 AM). + recurrence: This type is used for a recurrence-based schedule. A recurrence m ay be periodic (i.e., repeat over the same period, e.g., every five minutes) or not ( i.e., repeat in a non-regular manner, e.g., every day at 8 and 9 AM).
* "frequency-type": Characterizes the repeating interval rule of a recurrence sche dule (secondly, minutely, etc.). * "frequency-type": Characterizes the repeating interval rule of a recurrence sche dule (secondly, minutely, etc.).
* "schedule-state": Indicates the status of a schedule (enabled, disabled, conflic ted, finished, etc.). This identity can also be used * "schedule-state": Indicates the status of a schedule (enabled, disabled, conflic ted, finished, etc.). This identity can also be used
to manage the state of individual instances of a recurrence-based schedule. to manage the state of individual instances of a recurrence-based schedule.
* "discard-action-type": Specifies the action for the responder to take (e.g., gen erate a warning or an error message) when * "discard-action-type": Specifies the action for the responder to take (e.g., gen erate a warning or an error message) when
a requested schedule cannot be accepted for any reason and is discarded. a requested schedule cannot be accepted for any reason and is discarded.
## Scheduling Groupings {#sec-grp} ## Scheduling Groupings {#sec-grp}
skipping to change at line 267 skipping to change at line 245
The "description" parameter includes a description of the schedule. No constraint is imposed The "description" parameter includes a description of the schedule. No constraint is imposed
on the structure nor the use of this parameter. on the structure nor the use of this parameter.
The "time-zone-identifier" parameter, if provided, specifies the The "time-zone-identifier" parameter, if provided, specifies the
time zone reference {{!RFC7317}} of the local date and time values. This parameter time zone reference {{!RFC7317}} of the local date and time values. This parameter
MUST be specified if any of the date and time values are in the format of local ti me. MUST be specified if any of the date and time values are in the format of local ti me.
It MUST NOT be applied to date and time values that are specified in the format It MUST NOT be applied to date and time values that are specified in the format
of UTC or time zone offset to UTC. of UTC or time zone offset to UTC.
<!--[rfced] Please clarify "to execute independent of when it
ends". Is the meaning that the validity parameter determines when a
schedule can be started and thus "executed independently from when it
ends"?
Original:
It determines the latest time that a schedule can be started to
execute independent of when it ends and takes precedence over
similar attributes that are provided at the schedule instance
itself.
Perhaps:
It determines the latest time that a schedule can be started and
thus executed independently from when it ends, and it takes
precedence over similar attributes that are provided at the
schedule instance itself.
The "validity" parameter specifies the date and time after which a schedule The "validity" parameter specifies the date and time after which a schedule
will not be considered as valid. It determines the latest time that a schedule will not be considered as valid. It determines the latest time that a schedule
can be started to execute independent of when it ends, and it takes precedence ove r can be started and thus executed independently from when it ends, and it takes pre cedence over
similar attributes that are provided at the schedule instance itself. A requested similar attributes that are provided at the schedule instance itself. A requested
schedule may still be accepted, but any occurrences that start later than the conf igured value will not be executed. schedule may still be accepted, but any occurrences that start later than the conf igured value will not be executed.
The "max/min-allowed-start" parameters specify the maximum/minimum scheduled The "max/min-allowed-start" parameters specify the maximum/minimum scheduled
start date and time. A requested schedule will be rejected if the first start date and time. A requested schedule will be rejected if the first
occurrence of the schedule starts later/earlier than the configured values. occurrence of the schedule starts later/earlier than the configured values.
The "max-allowed-end" parameter specifies the maximum allowed end time of The "max-allowed-end" parameter specifies the maximum allowed end time of
the last occurrence. A requested schedule will be rejected if the end time the last occurrence. A requested schedule will be rejected if the end time
of the last occurrence is later than the configured "max-allowed-end" value. of the last occurrence is later than the configured "max-allowed-end" value.
The "discard-action" parameter specifies the action if a requested schedule The "discard-action" parameter specifies the action if a requested schedule
cannot be accepted for any reason and is discarded. Possible reasons include, cannot be accepted for any reason and is discarded. Possible reasons include,
but are not limited to, the requested schedule failing to satisfy the guards in th is grouping, but are not limited to, the requested schedule failing to satisfy the guards in th is grouping,
conflicting with existing schedules, or being out-of-date (e.g., the expected star t has already passed). conflicting with existing schedules, or being out-of-date (e.g., the expected star t has already passed).
<!--[rfced] May we update this sentence to make the two items
mentioned (i.e., "all schedules on a system" and "too short schedule
requests") more parallel and thus easier to read?
Original:
These parameters apply to all schedules on a system and are meant to
provide guards against stale configuration, too short schedule
requests that would prevent validation by admins of some critical
systems, etc.
Perhaps:
These parameters apply to all schedules on a system and are meant These parameters apply to all schedules on a system and are meant
to provide guards against stale configuration, schedule requests to provide guards against stale configuration, schedule requests
that are too short and that would thus prevent validation by admins that are too short and that would thus prevent validation by admins of some critic
of some critical systems, etc. al systems, etc.
These parameters apply to all schedules on a system and are meant
to provide guards against stale configuration, too short schedule requests
that would prevent validation by admins of some critical systems, etc.
### The "period-of-time" Grouping {#sec-period} ### The "period-of-time" Grouping {#sec-period}
The "period-of-time" grouping ({{pt-tree}}) represents a time period using The "period-of-time" grouping ({{pt-tree}}) represents a time period using
either a start date and time ("period-start") and end date and time ("period-end") or a either a start date and time ("period-start") and end date and time ("period-end") or a
start date and time ("period-start") and a non-negative time duration ("duration") . For the first start date and time ("period-start") and a non-negative time duration ("duration") . For the first
format, the start of the period MUST be no later than the end of the period. If ne ither an end date and time ("period-end") format, the start of the period MUST be no later than the end of the period. If ne ither an end date and time ("period-end")
nor a duration ("duration") is indicated, the period is considered to last forever . nor a duration ("duration") is indicated, the period is considered to last forever .
If the duration ("duration") value is 0 or the end time ("period-end") is the same as the start time ("period-start"), the period If the duration ("duration") value is 0 or the end time ("period-end") is the same as the start time ("period-start"), the period
is considered as a one-shot schedule. If no start date and time ("period-start") is considered as a one-shot schedule. If no start date and time ("period-start")
skipping to change at line 375 skipping to change at line 318
+-- interval? uint32 +-- interval? uint32
~~~~ ~~~~
{: #rec-grp-tree title="'recurrence-basic' Grouping Tree Structure"} {: #rec-grp-tree title="'recurrence-basic' Grouping Tree Structure"}
The frequency parameter ("frequency") identifies the type of recurrence rule. For e xample, The frequency parameter ("frequency") identifies the type of recurrence rule. For e xample,
a "daily" frequency value specifies repeating events based on an interval of a day or more. a "daily" frequency value specifies repeating events based on an interval of a day or more.
Consistent with {{Section 3.3.10 of !RFC5545}}, the interval parameter ("interval") represents at which interval the recurrence rule repeats. For example, Consistent with {{Section 3.3.10 of !RFC5545}}, the interval parameter ("interval") represents at which interval the recurrence rule repeats. For example,
within a "daily" recurrence rule, an interval value of "8" means every eight days. within a "daily" recurrence rule, an interval value of "8" means every eight days.
<!-- [rfced] We note that Section 4.13 of [I-D.ietf-netmod-rfc8407bis] mentions Note that, per {{Section 4.13 of ?I-D.ietf-netmod-rfc8407bis}}, no "default"
"default" but doesn't mention "mandatory"; however, Section 4.14 substatement is defined here for both "frequency" and "interval"
mentions both "default" and "mandatory". Should the citations below be updated parameters because there are cases (e.g., profiling) where using these statements i
to point to Section 4.14 instead? s problematic. No "mandatory" substatement is defined here for the same reason.
Original (Section 3.3.3):
Note that per Section 4.13 of [I-D.ietf-netmod-rfc8407bis], neither a
"default" nor a "mandatory" substatement is defined here for both
"frequency" and "interval" parameters because there are cases (e.g.,
profiling) where using these statements is problematic.
Original (Section 3.3.8):
Note that per Section 4.13 of [I-D.ietf-netmod-rfc8407bis], neither a
"default" nor a "mandatory" substatement is defined here because there
are cases (e.g., profiling) where using these statements is problematic.
Note that, per {{Section 4.13 of ?I-D.ietf-netmod-rfc8407bis}}, neither a "default"
nor a "mandatory" substatement is defined here for both "frequency" and "interval"
parameters because there are cases (e.g., profiling) where using these statements i
s problematic.
YANG modules using this grouping SHOULD refine these two nodes with either a YANG modules using this grouping SHOULD refine these two nodes with either a
"mandatory" or a "default" statement if they always need to be configured or have d efault values. "mandatory" or a "default" statement if they always need to be configured or have d efault values.
This recommendation MAY be ignored in cases such as when this grouping is used by a nother grouping. This recommendation MAY be ignored in cases such as when this grouping is used by a nother grouping.
The "recurrence-description" parameter includes a description of the period. No con straint is imposed The "recurrence-description" parameter includes a description of the period. No con straint is imposed
on the structure nor the use of this parameter. on the structure nor the use of this parameter.
### The "recurrence-utc" Grouping {#sec-rec-utc} ### The "recurrence-utc" Grouping {#sec-rec-utc}
The "recurrence-utc" grouping ({{rec-utc-grp-tree}}) uses the "recurrence-basic" The "recurrence-utc" grouping ({{rec-utc-grp-tree}}) uses the "recurrence-basic"
skipping to change at line 517 skipping to change at line 443
| +-- count? uint32 | +-- count? uint32
+-- recurrence-description? string +-- recurrence-description? string
+-- frequency? identityref +-- frequency? identityref
+-- interval? uint32 +-- interval? uint32
+-- period-timeticks* [period-start] +-- period-timeticks* [period-start]
+-- period-start yang:timeticks +-- period-start yang:timeticks
+-- period-end? yang:timeticks +-- period-end? yang:timeticks
~~~~ ~~~~
{: #rec-utc-dt-grp-tree title="'recurrence-utc-with-periods' Grouping Tree Structure" } {: #rec-utc-dt-grp-tree title="'recurrence-utc-with-periods' Grouping Tree Structure" }
<!--[rfced] For conciseness, may we shorten "the value indicated by the value
of the..." in the sentence below as follows?
Original:
The value of the "period-start" instance MUST
NOT exceed the value indicated by the value of "frequency" instance...
Perhaps:
The value of the "period-start" instance MUST
NOT exceed the value of the "frequency" instance...
The recurrence instances are specified by the union of occurrences defined The recurrence instances are specified by the union of occurrences defined
by both the recurrence rule and "period-timeticks" list. This list uses the by both the recurrence rule and "period-timeticks" list. This list uses the
"yang:timeticks" type defined in {{!RFC6991}}. Duplicate instances "yang:timeticks" type defined in {{!RFC9911}}. Duplicate instances
are ignored. The value of the "period-start" instance MUST NOT exceed the are ignored. The value of the "period-start" instance MUST NOT exceed the
value indicated by the value of the "frequency" instance, i.e., the "timeticks" value of the "frequency" instance, i.e., the "timeticks"
value must not exceed 100 in a secondly recurrence rule, and it must not value must not exceed 100 in a secondly recurrence rule, and it must not
exceed 6000 in a minutely recurrence rule, and so on. exceed 6000 in a minutely recurrence rule, and so on.
### The "recurrence-time-zone-with-periods" Grouping {#sec-rec-tz-dt} ### The "recurrence-time-zone-with-periods" Grouping {#sec-rec-tz-dt}
The "recurrence-time-zone-with-periods" grouping ({{rec-tz-dt-grp-tree}}) uses The "recurrence-time-zone-with-periods" grouping ({{rec-tz-dt-grp-tree}}) uses
the "recurrence-with-time-zone" grouping ({{sec-rec-tz}}) and the "recurrence-with-time-zone" grouping ({{sec-rec-tz}}) and
adds a "period" list to define an aggregate set of repeating occurrences. adds a "period" list to define an aggregate set of repeating occurrences.
~~~~ yangtree ~~~~ yangtree
skipping to change at line 648 skipping to change at line 562
The "bysetpos" conveys a list of values that corresponds to the nth occurrence The "bysetpos" conveys a list of values that corresponds to the nth occurrence
within the set of recurrence instances to be specified. For example, in a "monthly " within the set of recurrence instances to be specified. For example, in a "monthly "
recurrence rule, the "byday" data node specifies every Monday of the week, and the recurrence rule, the "byday" data node specifies every Monday of the week, and the
"bysetpos" with a value of "-1" represents the last Monday of the month. "bysetpos" with a value of "-1" represents the last Monday of the month.
Not setting the "bysetpos" data node represents every Monday of the month. Not setting the "bysetpos" data node represents every Monday of the month.
The "workweek-start" data node specifies the day on which the week starts. This is The "workweek-start" data node specifies the day on which the week starts. This is
significant when a "weekly" recurrence rule has an interval greater than 1, and significant when a "weekly" recurrence rule has an interval greater than 1, and
a "byday" data node is specified. This is also significant when in a "yearly" rule a "byday" data node is specified. This is also significant when in a "yearly" rule
and a "byyearweek" is specified. Note that, per {{Section 4.13 of ?I-D.ietf-netmod and a "byyearweek" is specified. Note that, per {{Section 4.13 of ?I-D.ietf-netmod
-rfc8407bis}}, neither a "default" -rfc8407bis}}, no "default"
nor a "mandatory" substatement is defined here because there are cases (e.g., prof substatement is defined here because there are cases (e.g., profiling)
iling) where using these statements is problematic. No "mandatory" substatement is define
where using these statements is problematic. d here for the same reason.
YANG modules using this grouping SHOULD refine the "workweek-start" node with eith er a YANG modules using this grouping SHOULD refine the "workweek-start" node with eith er a
"mandatory" or a "default" statement if it always needs to be configured or has a default value. "mandatory" or a "default" statement if it always needs to be configured or has a default value.
This MAY be ignored in cases such as when this grouping is used by another groupin g. This MAY be ignored in cases such as when this grouping is used by another groupin g.
The "exception-dates" data node specifies a list of exceptions for recurrence. The The "exception-dates" data node specifies a list of exceptions for recurrence. The
final recurrence set is generated by gathering all of the date and time values final recurrence set is generated by gathering all of the date and time values
created by any of the specified recurrence rules and date-times and then created by any of the specified recurrence rules and date-times and then
excluding any start date and time values specified by "exception-dates" parameter. excluding any start date and time values specified by "exception-dates" parameter.
### The "schedule-status", "schedule-status-with-time-zone", and "schedule-status-wit h-name" Groupings {#sec-schedule-status} ### The "schedule-status", "schedule-status-with-time-zone", and "schedule-status-wit h-name" Groupings {#sec-schedule-status}
The "schedule-status", "schedule-status-with-time-zone", and "schedule-status-with -name" groupings ({{sche-status-tree}}) define common parameters The "schedule-status", "schedule-status-with-time-zone", and "schedule-status-with -name" groupings ({{sche-status-tree}}) define common parameters
for scheduling management/status exposure. The "schedule-status-with-time-zone" gr ouping has the same for scheduling management/status exposure. The "schedule-status-with-time-zone" gr ouping has the same
structure as "schedule-status" but with an additional parameter to identify a time zone. Similarly, the "schedule-status-with-name" grouping has the same structure as "schedule-status" but with an additional parameter to identify a schedule "schedule-n ame". These structure as "schedule-status" but with an additional parameter to identify a time zone. Similarly, the "schedule-status-with-name" grouping has the same structure as "schedule-status" but with an additional parameter to identify a schedule "schedule-n ame". These
structures are defined in the module to allow for better modularity and flexibilit y. structures are defined in the module to allow for better modularity and flexibilit y.
<!--[rfced] In the title of Figure 9, is the asterisk (*) in
"schedule-status-*" correct? We ask as we do not see this elsewhere in
the document.
Current:
Figure 9: 'schedule-status-*' Groupings Tree Structure
Perhaps:
Figure 9: 'schedule-status' Groupings Tree Structure
~~~~ yangtree ~~~~ yangtree
grouping schedule-status: grouping schedule-status:
+-- state? identityref +-- state? identityref
+-- version? uint16 +-- version? uint16
+-- schedule-type? identityref +-- schedule-type? identityref
+--ro local-time? yang:date-and-time +--ro local-time? yang:date-and-time
+--ro last-update? yang:date-and-time +--ro last-update? yang:date-and-time
+--ro counter? yang:counter32 +--ro counter? yang:counter32
+--ro last-occurrence? yang:date-and-time +--ro last-occurrence? yang:date-and-time
+--ro upcoming-occurrence? yang:date-and-time +--ro upcoming-occurrence? yang:date-and-time
skipping to change at line 813 skipping to change at line 716
|schedLastFailure| Not Supported | |schedLastFailure| Not Supported |
|schedLastFailed| last-failed-occurrence| |schedLastFailed| last-failed-occurrence|
|schedStorageType| Not Supported | |schedStorageType| Not Supported |
|schedVariable| Not applicable | |schedVariable| Not applicable |
|schedValue| Not applicable | |schedValue| Not applicable |
|schedTriggers| counter/failure-counter | |schedTriggers| counter/failure-counter |
{: #mapping title="YANG/MIB Mapping"} {: #mapping title="YANG/MIB Mapping"}
# The "ietf-schedule" YANG Module {#sec-schedule} # The "ietf-schedule" YANG Module {#sec-schedule}
<!--[rfced] FYI - As RFC 5545 is also cited within the "ietf-schedule" This module imports types defined in {{!RFC9911}} and {{!RFC7317}}.
module, we've added it to the list of RFCs preceding the module.
Original:
This module imports types defined in [RFC6991] and [RFC7317].
Current:
This module imports types defined in [RFC5545], [RFC6991], and [RFC7317].
<!--[rfced] FYI - We made the following update to the format in the
"ietf-schedule" YANG module using the formatting option of pyang.
Original:
error-message
"Frequency must be provided.";
Current:
error-message "Frequency must be provided.";
This module imports types defined in {{!RFC5545}}, {{!RFC6991}}, and {{!RFC7317}}.
~~~~ yang ~~~~ yang
file "ietf-schedule@2026-02-18.yang" file "ietf-schedule@2026-02-18.yang"
module ietf-schedule { module ietf-schedule {
yang-version 1.1; yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:ietf-schedule"; namespace "urn:ietf:params:xml:ns:yang:ietf-schedule";
prefix schedule; prefix schedule;
import ietf-yang-types { import ietf-yang-types {
prefix yang; prefix yang;
reference reference
"RFC 6991: Common YANG Data Types"; "RFC 9911: Common YANG Data Types";
} }
import ietf-system { import ietf-system {
prefix sys; prefix sys;
reference reference
"RFC 7317: A YANG Data Model for System Management"; "RFC 7317: A YANG Data Model for System Management";
} }
organization organization
"IETF NETMOD Working Group"; "IETF NETMOD Working Group";
skipping to change at line 1765 skipping to change at line 1647
RESTCONF protocol operations and content. RESTCONF protocol operations and content.
The "ietf-schedule" module defines a set of identities, types, and The "ietf-schedule" module defines a set of identities, types, and
groupings. These nodes are intended to be reused by other YANG groupings. These nodes are intended to be reused by other YANG
modules. The module by itself does not expose any data nodes that modules. The module by itself does not expose any data nodes that
are writable, data nodes that contain read-only state, or RPCs. As are writable, data nodes that contain read-only state, or RPCs. As
such, there are no additional security issues related to the "ietf-schedule" such, there are no additional security issues related to the "ietf-schedule"
module that need to be considered. module that need to be considered.
Modules that use the groupings that are defined in this document Modules that use the groupings that are defined in this document
should identify the corresponding security considerations, for example: should identify the corresponding security considerations. For example,
reuising the following groupings will expose privacy-related information:
* Scheduling depends on reliable and accurate time synchronization. Inaccurate dat e * Scheduling depends on reliable and accurate time synchronization. Inaccurate dat e
and time setting can lead to scheduling events being triggered at incorrect and time setting can lead to scheduling events being triggered at incorrect
intervals, potentially causing system failures or security vulnerabilities. intervals, potentially causing system failures or security vulnerabilities.
* Recurring events may conceal abnormal behavior or security threats, which * Recurring events may conceal abnormal behavior or security threats, which
may be drowned out by normal events, especially when they are triggered frequent ly. may be drowned out by normal events, especially when they are triggered frequent ly.
* The absence of detailed logs and audit records of each occurrence trigger time * The absence of detailed logs and audit records of each occurrence trigger time
and action results and therefore may make security incidents difficult to trace. and action results and therefore may make security incidents difficult to trace.
* Care must be taken when defining recurrences occurring very often and * Care must be taken when defining recurrences occurring very often and
frequent that can be an additional source of attacks by keeping the system frequent that can be an additional source of attacks by keeping the system
skipping to change at line 1821 skipping to change at line 1704
: RFC 9922 : RFC 9922
--- back --- back
# Examples of Scheduling Format Representation {#usage} # Examples of Scheduling Format Representation {#usage}
This section provides some examples to illustrate the use of the This section provides some examples to illustrate the use of the
period and recurrence formats defined in {{sec-schedule}}. The following period and recurrence formats defined in {{sec-schedule}}. The following
modules are used for illustration purposes and make examples verifiable: modules are used for illustration purposes and make examples verifiable:
<!--[rfced] In Appendix A, should each example be listed in separate
sourcecode blocks? They are all currently contained within one block of
sourcecode.
<!-- [rfced] FYI, the YANG examples (example-sch-usage-1 - 8.yang and
example-scheduled-backup.yang, example-scheduled-link-bandwidth.yang,
and example-sch-capacity-res.yang) each give errors and warnings from
pyang -ietf. Please confirm this is as expected.
~~~~ yang ~~~~ yang
module example-sch-usage-1 { module example-sch-usage-1 {
yang-version 1.1; yang-version 1.1;
namespace "http://example.com/example-sch-usage-1"; namespace "http://example.com/example-sch-usage-1";
prefix "ex-schu-1"; prefix "ex-schu-1";
import ietf-schedule { import ietf-schedule {
prefix "schedule"; prefix "schedule";
} }
skipping to change at line 2100 skipping to change at line 1972
} }
~~~~ ~~~~
{: #ex-6 title="Simple Schedule with Recurrence with Time Zone Indication"} {: #ex-6 title="Simple Schedule with Recurrence with Time Zone Indication"}
## The "recurrence-utc-with-periods" Grouping ## The "recurrence-utc-with-periods" Grouping
{{ex-7}} indicates a recurrence that occurs every two days starting at 9:00 AM {{ex-7}} indicates a recurrence that occurs every two days starting at 9:00 AM
and 3:00 PM for a duration of 30 minutes and 40 minutes, respectively, and 3:00 PM for a duration of 30 minutes and 40 minutes, respectively,
from 2025-06-01 to 2025-06-30 in UTC: from 2025-06-01 to 2025-06-30 in UTC:
<!--[rfced] We note that dates are formatted in different ways in
Appendix A. For example, "January 31, 2025" and "2025-06-01" are used
in Appendices A.1 and A.6, respectively. If these instances should be
consistent, please let us know which form you prefer.
Original:
Figure 10 illustrates the example of a requested schedule that needs
to start no earlier than 08:00 AM, January 1, 2025 and end no later
than 8:00 PM, January 31, 2025 (Beijing time).
...
Figure 18 indicates a recurrence that occurs every two days starting
at 9:00 AM and 3:00 PM for a duration of 30 minutes and 40 minutes
respectively, from 2025-06-01 to 2025-06-30 in UTC:
~~~~ json ~~~~ json
{ {
"example-sch-usage-6:recurrence-utc-with-periods": { "example-sch-usage-6:recurrence-utc-with-periods": {
"recurrence-first": { "recurrence-first": {
"start-time-utc": "2025-06-01T09:00:00Z" "start-time-utc": "2025-06-01T09:00:00Z"
}, },
"frequency": "ietf-schedule:daily", "frequency": "ietf-schedule:daily",
"interval": 2, "interval": 2,
"utc-until": "2025-06-30T23:59:59Z", "utc-until": "2025-06-30T23:59:59Z",
"period-timeticks": [ "period-timeticks": [
skipping to change at line 2333 skipping to change at line 2190
organization organization
"Example, Inc."; "Example, Inc.";
contact contact
"Support at example.com"; "Support at example.com";
description description
"Example of a module defining a scheduled-based backup "Example of a module defining a scheduled-based backup
operation."; operation.";
revision "2023-01-19" { revision "2026-02-20" {
description description
"Initial version."; "Initial version.";
reference reference
"RFC 9922: A YANG Data Model for Scheduling."; "RFC 9922: A YANG Data Model for Scheduling.";
} }
container scheduled-backup-tasks { container scheduled-backup-tasks {
description description
"A container for backing up all current running configurations "A container for backing up all current running configurations
on the device."; on the device.";
skipping to change at line 2438 skipping to change at line 2295
} }
} }
~~~~ ~~~~
## Example: Schedule Network Properties to Change Based on Date and Time {#augments} ## Example: Schedule Network Properties to Change Based on Date and Time {#augments}
Network properties may change over a specific period of time or based on a Network properties may change over a specific period of time or based on a
recurrence rule, e.g., {{?RFC9657}}. recurrence rule, e.g., {{?RFC9657}}.
The following example module, which augments the "recurrence-utc-with-periods" The following example module, which augments the "recurrence-utc-with-periods"
grouping from the "ietf-schedule" module, shows how a scheduled attribute grouping from the "ietf-schedule" module, shows how a scheduled attribute
could be defined. could be defined. Note that
{{?RFC8345}} and this document are referenced in the module.
<!--[rfced] The example module in Appendix B references RFC 8345 but
no corresponding reference entry exists. May we add RFC 8345 under the
Informative References section and update the running text as follows?
Original:
The following example module which augments the
"recurrence-utc-with-periods" grouping from "ietf-schedule" module
shows how a scheduled attribute could be defined.
Perhaps:
The following example module, which augments the
"recurrence-utc-with-periods" grouping from "ietf-schedule" module,
shows how a scheduled attribute could be defined. Note that
[RFC8345] and this document are referenced in the module.
~~~~ yang ~~~~ yang
module example-scheduled-link-bandwidth { module example-scheduled-link-bandwidth {
yang-version 1.1; yang-version 1.1;
namespace "http://example.com/example-scheduled-link-bandwidth"; namespace "http://example.com/example-scheduled-link-bandwidth";
prefix "ex-scattr"; prefix "ex-scattr";
import ietf-network { import ietf-network {
prefix "nw"; prefix "nw";
reference reference
skipping to change at line 2483 skipping to change at line 2325
organization organization
"Example, Inc."; "Example, Inc.";
contact contact
"Support at example.com"; "Support at example.com";
description description
"Example of a module defining a scheduled link bandwidth."; "Example of a module defining a scheduled link bandwidth.";
revision "2023-01-19" { revision "2026-02-20" {
description description
"Initial version."; "Initial version.";
reference reference
"RFC 9922: A YANG Data Model for Scheduling"; "RFC 9922: A YANG Data Model for Scheduling";
} }
grouping link-bandwidth-grouping { grouping link-bandwidth-grouping {
description description
"Grouping of the link bandwidth definition."; "Grouping of the link bandwidth definition.";
leaf scheduled-bandwidth { leaf scheduled-bandwidth {
skipping to change at line 2555 skipping to change at line 2397
} }
} }
~~~~ ~~~~
{{ex-13}} shows a configuration example in XML {{W3C.XML1.0}} of a link's bandwidth that is {{ex-13}} shows a configuration example in XML {{W3C.XML1.0}} of a link's bandwidth that is
scheduled between 2025-12-01 0:00 UTC to the end of 2025-12-31 with a daily scheduled between 2025-12-01 0:00 UTC to the end of 2025-12-31 with a daily
schedule. In each day, the bandwidth value is scheduled to be 500 Kbps between schedule. In each day, the bandwidth value is scheduled to be 500 Kbps between
1:00 AM to 6:00 AM and 800 Kbps between 10:00 PM to 11:00 PM. The bandwidth 1:00 AM to 6:00 AM and 800 Kbps between 10:00 PM to 11:00 PM. The bandwidth
value that is not covered by the period above is 1000 Kbps. value that is not covered by the period above is 1000 Kbps.
<!--[rfced] FYI, a normative reference to the XML specification has
been added because this document contains XML.
See the IESG statement on "Guidelines for the Use of Formal
Languages in IETF Specifications"
(https://ietf.org/blog/guidelines-use-formal-languages-ietf-specifications/) -
specifically "The use of a language requires a reference to the
specification for that language. This reference is normative, and
needs to fulfil the usual requirements for normative references
(Section 7 of RFC 2026)." Please review where the XML specification
is cited and let us know if you prefer otherwise.
Original:
Figure 24 shows a configuration example of a link's bandwidth that is
scheduled between 2025-12-01 0:00 UTC to the end of 2025-12-31 with a
daily schedule.
Current:
Figure 24 shows a configuration example in XML [W3C.XML1.0]
of a link's bandwidth that is scheduled between 2025-12-01 0:00 UTC
to the end of 2025-12-31 with a daily schedule.
Normative Reference Entry:
[W3C.XML1.0]
Bray, T., Ed., Paoli, J., Ed., Sperberg-McQueen, C.M., Ed., Maler,
E., Ed., and F. Yergeau, Ed., "Extensible Markup Language (XML)
1.0 (Fifth Edition)", W3C Recommendation, 26 November 2008,
<https://www.w3.org/TR/2008/REC-xml-20081126/>.
~~~ xml ~~~ xml
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<link-attributes <link-attributes
xmlns="http://example.com/example-scheduled-link-bandwidth" xmlns="http://example.com/example-scheduled-link-bandwidth"
xmlns:schedule="urn:ietf:params:xml:ns:yang:ietf-schedule"> xmlns:schedule="urn:ietf:params:xml:ns:yang:ietf-schedule">
<link> <link>
<source-node>ne1</source-node> <source-node>ne1</source-node>
<destination-node>ne2</destination-node> <destination-node>ne2</destination-node>
<default-bandwidth>1000</default-bandwidth> <default-bandwidth>1000</default-bandwidth>
<recurrence-first> <recurrence-first>
skipping to change at line 2709 skipping to change at line 2522
Many thanks to the authors of {{?I-D.ietf-tvr-schedule-yang}}, {{?I-D.ietf-opsawg- scheduling-oam-tests}}, and {{?I-D.ietf-netmod-eca-policy}} Many thanks to the authors of {{?I-D.ietf-tvr-schedule-yang}}, {{?I-D.ietf-opsawg- scheduling-oam-tests}}, and {{?I-D.ietf-netmod-eca-policy}}
for the constructive discussion during IETF#118. for the constructive discussion during IETF#118.
Other related efforts were explored in the past, e.g., {{?I-D.liu-netmod-yang-sche dule}}. Other related efforts were explored in the past, e.g., {{?I-D.liu-netmod-yang-sche dule}}.
Thanks to {{{Reshad Rahman}}} for the great YANG Doctors review, {{{Mahesh Jethana ndani}}} for the AD review, {{{Per Andersson}}} for the OPSDIR review, Thanks to {{{Reshad Rahman}}} for the great YANG Doctors review, {{{Mahesh Jethana ndani}}} for the AD review, {{{Per Andersson}}} for the OPSDIR review,
{{{Peter Yee}}} for the GENART review, and {{{Acee Lindem}}} for the RTGDIR review . {{{Peter Yee}}} for the GENART review, and {{{Acee Lindem}}} for the RTGDIR review .
Thanks to {{{Éric Vyncke}}}, {{{Erik Kline}}}, and {{{Mike Bishop}}} for the IESG review. Thanks to {{{Éric Vyncke}}}, {{{Erik Kline}}}, and {{{Mike Bishop}}} for the IESG review.
<!-- [rfced] Please review the language set for each instance of sourcecode
in the MD file to ensure correctness. If the current list of preferred
values for languages
(https://www.rfc-editor.org/rpc/wiki/doku.php?id=sourcecode-types)
does not contain an applicable language, then feel free to let us know.
Also, it is acceptable to leave the language not set.
<!-- [rfced] RFC 6991 has been obsoleted by RFC 9911. May we replace RFC
6991 with RFC 9911? If yes, this will include updating the references in the
YANG module.
<!-- [rfced] Please review the "Inclusive Language" portion of the online
Style Guide <https://www.rfc-editor.org/styleguide/part2/#inclusive_language>
and let us know if any changes are needed. Updates of this nature typically
result in more precise language, which is helpful for readers.
Note that our script did not flag any words in particular, but this should
still be reviewed as a best practice.
 End of changes. 26 change blocks. 
215 lines changed or deleted 44 lines changed or added

This html diff was produced by rfcdiff 1.48.