Hi,
Let me start by thanking the authors because I believe this YANG model
will be a useful building block for a number of operational features
that rely on the ability to schedule functions within the network.
I'd like to see this document progress through WGLC, but I did find a
lot of (relatively small) comments during my review. I'm sorry, but I
did not check my comments for duplication of Reshad's review.
I did not review the examples, but congratulations on not having any
wrapping lines!
Cheers,
Adrian
= Comments =
I note some tension between "scheduling" which is a planning process,
and "reporting" which makes a statement about what has happened in the
past.
The document sems to mainly live up to its title (i.e., scheduling), but
I find text such as (in A.9):
At the time of 12:15 PM, 2025-12-01 (UTC), the recurring event
occurred at (note that occurrence at 10:20 AM is excluded): 9:00,
9:20, 9:40, 10:00, 10:40, 11:00, 11:20, 11:40, 12:00. The last
occurrence was at 12:00, the upcoming one is at 12:20.
It seems a very small step from reporting what scheduled things happened
to reporting what unscheduled things happened. I'm not sure that there
is anything to be done here, but it is possible that the Abstract and
Introduction need to call out more specifically the fact that the module
can also report what has happened as well as what is to happen.
---
The Abstract says that the granularity levels vary from basic to
advanced. Is that true? Or is it, as stated in 3.1, the representation
of the recurrence rule that varies from basic to advanced?
---
Introduction has:
Section 5 discusses relationship with the managed objects defined in
[RFC3231].
Very good, but a little hint would be helpful. Such as:
Section 5 discusses the relationship with the Management Information
Base (MIB) managed objects for scheduling management operations
defined in [RFC3231].
---
Instead of Section 3 being called "Groupings" it might be more helpfully
named "Scheduling Groupings".
Similarly, Appendix A might be better as "Examples of Scheduling Format
Representation"
---
I hate that 5545 used "SECONDLY" and "MINUTELY". It makes me twitch
every time I read them. But you are right to use the terms defined
there. I do wonder whether using upper case, as in 5545, might make the
normal reader less ill.
Note that in 3.2 you use "per second, per minute, etc.". Perhaps this
should be "secondly, minutely, etc.".
---
3.1 says:
Refer to Section 3.4 for the use of these features.
But I think these features are discussed in subsections of 3.3. It's
true that 3.4 is on "Feature Use" but it only contains 8 lines of text.
---
I think maybe re-order "frequency-type" and "schedule-type" because
frequency is only relevant for recurring schedules.
This could also apply in the module, itself.
---
As I understand "schedule-state" it is used to read the current state
of a schedule, but also to control it. I really think you should not
overload and confuse this. Just as we would have done in SMI, you should
have two objects: intended-schedule-state and current-schedule-state.
---
The description of "discard-action" is mangled in the document,
I find:
3.2
* "discard-action": Specifies the action to perform when a schedule
is discarded (e.g., generate a warning or an error message).
3.3.1
The "discard-action" parameter specifies the action if a requested
schedule is considered inactive or out-of-date.
6
identity discard-action {
description
"Indicates that a schedule will be discarded.";
}
6
leaf discard-action {
type identityref {
base discard-action;
}
description
"Specifies the behavior when a schedule is discarded when
enforcing the guards in this grouping or it is received
out-of-date.";
}
Now, I'll grant that these are *similar* but they don't feel to be the
same.
I'd suggest:
- In 3.2, spend a little time explaining what "discarded" means.
Perhaps the text from 3.3.1 would do.
- Fix the description of the discard-action identity, as this is
definitely wrong.
- Consider whether the description of the discard-action leaf appears
to limit the cases of discard leaving other types of discard
unaddressed.
- Worry about having a leaf with the same name as the identity.
---
3.3.1 has:
The "time-zone-identifier" parameter, if provided, specifies the time
zone reference of the date and time values with local time format.
The use of "with local time format" made me think that the format of the
time-zone-identifier was a local matter. But this is not, I think, what
you mean. Perhaps:
The "time-zone-identifier" parameter, if provided, specifies the time
zone reference [RFC7317] of the local date and time values.
---
3.3.1 has:
The "validity" parameter specifies the date and time after which a
schedule will be considered as invalid. It determines the latest
time that a schedule can be executed by a system and takes precedence
over similar attributes that are provided at the schedule instance
itself.
Now, consider a schedule event that takes a finite amount of time to be
executed. Do you mean that execution must complete before or at the
validity time or that execution must start before or at the validity
time?
---
3.3.2
The "period-of-time" grouping (Figure 3) represents a time period
using either a start ("period-start") and end date and time ("period-
end"), or a start ("period-start") and a positive time duration
("duration").
Why is period-end described as "end date and time" but period-start is
just described as "start"? Surely it should be "start date and time".
---
Duration
I came to this when reading 3.3.2
The "period-of-time" grouping (Figure 3) represents a time period
using either a start ("period-start") and end date and time ("period-
end"), or a start ("period-start") and a positive time duration
("duration"). For the first format, the start of the period MUST be
before the end of the period.
There is an obvious imbalance that made me think "can duration be zero?
and if so, why must the start be before the end (and not before or equal
to)?
So I searched "duration" in the document and I found a real mixture. It
may be useable, but I wonder why it is necessary to have all the
following ways of expressing duration.
3.3.4 and 3.3.6
| +-- duration? uint32
Which allows zero.
6
typedef duration {
type string {
pattern '((\+)?|\-)P((([0-9]+)D)?(T(0[0-9]|1[0-9]|2[0-3])'
+ ':[0-5][0-9]:[0-5][0-9]))|P([0-9]+)W';
}
Which allows +/-/0
6
case duration {
description
"A period of time is defined by a start and a positive
duration of time.";
leaf duration {
type duration {
pattern 'P((([0-9]+)D)?(T(0[0-9]|1[0-9]|2[0-3])'
+ ':[0-5][0-9]:[0-5][0-9]))|P([0-9]+)W';
}
Which is +/0 although the text says it is a positive duration.
---
3.3
Note that per Section 4.13 of
[I-D.ietf-netmod-rfc8407bis], no "default" substatement is used here
because there are cases (e.g., profiling) where the use of the
default is problematic.
This feels like [I-D.ietf-netmod-rfc8407bis] is being used as a
normative reference. Shouldn't be an issue as that draft is a little
ahead in the processing queue.
---
3.3.4
The "duration" parameter specifies, in units of seconds, the time
period of the first occurrence. Unless specified otherwise, the
"duration" also applies to subsequent recurrence instances.
Unless specified otherwise how?
---
3.3.4
Note that the "interval" and "duration" cover two distinct properties
of a schedule event. The interval specifies when a schedule will
occur, combined with the frequency parameter; while the duration
indicates how long an occurrence will last.
Clear.
But what happens if the interval is shorter than the duration? Is that
allowed?
---
Count
The various textual descriptions and tree diagrams made me see that 0
was allowed (unit32) but that there was an assumption that the first
occurrence would always occur. Only when I got the module itself did I
find
leaf count {
type uint32;
description
"The positive number of occurrences at which to
terminate the recurrence.";
}
Perhaps the text (in all the cases) should include "MUST be GTE 1"
---
Direction
Not totally happy that the scoping -53..-1|1..53 can create some
confusion of the 53rd Monday in the month, etc.
---
failure-counter
Do we need to know when this counter was last reset?
---
4.
* Schedules received with a starting time in the past with respect
to current time SHOULD be ignored.
Please give the alternative "MAY" behaviour.
---
7. has:
This section uses the template described in Section 3.7 of
[I-D.ietf-netmod-rfc8407bis].
This is slightly risky with the draft as an Informational reference
because the template might change under your feet and this statement
would cease to be true.
I think that either you remove this statement (and, indeed, why is it
there except because you are tired of justifying the content and
format of Security Considerations sections of YANG documents that you
write!) or make the reference normative and risk a delay while that
draft completes the process as well as needing to come back later to
check that you are still using the correct template.
---
I believe that section 7 is missing clear instructions to future module
that make use of this module.
= Nits =
Section 2
s/entity that host/entity that hosts/
---
I found 3.3 a bit over the top.
Is Figure 1 in any way helpful?
Having given the cross-references to the section that describes each
grouping, do you need to say "Each of these groupings is presented in
the following subsections."
---
3.3.1
s/handles the schedule requests/handles schedule requests/
---
Throughout, please consider s/invalid/not valid/
---
2.2
Interval: Refers to an integer that specifies at which intervals a
recurrence rule repeats. Values are taken from "INTERVAL" rule in
Section 3.3.10 of [RFC5545].
3.3.3
Consistent with Section 3.3.10 of [RFC5545], the interval
("interval") represents at which intervals the recurrence rule
repeats.
Is that really "intervals" or should it be "interval"?
---
3.3.6
s/must not/MUST NOT/
s/e.g./i.e./
---
4.
OLD
* The second MUST have the value "60" at the end of months in which
a leap second occurs for date and time values.
NEW
* The second for date and time values MUST have the value "60" at
the end of months in which a leap second occurs.
END
---
5.
OLD
Despite no data nodes are defined in this document, Table 1 lists how
main objects in the DISMAN-SCHEDULE-MIB can be mapped to YANG
parameters.
NEW
Although no data nodes are defined in this document, Table 1 lists
how the main objects in the DISMAN-SCHEDULE-MIB can be mapped to YANG
parameters.
END
---
From: James Cumming (Nokia) <[email protected]>
Sent: 16 January 2025 22:38
To: [email protected]
Cc: NETMOD WG Chairs <[email protected]>; [email protected]
Subject: [netmod] WG Last Call - A Common YANG Data Model for Scheduling
All,
This starts working group last call on the Common YANG Data Model for
Scheduling draft.
https://datatracker.ietf.org/doc/draft-ietf-netmod-schedule-yang/03/
The IPR call prior to WGLC is concluded with no IPR was previously
disclosed. (Thread: https://mailarchive.ietf.org/arch/search/?as=1
<https://mailarchive.ietf.org/arch/search/?as=1&email_list=&end_date=&q=subj
ect%3A%28+IPR+call+prior+to+WGLC+-+A+Common+YANG+Data+Model+for+Scheduling%2
9&qdr=a&start_date=>
&email_list=&end_date=&q=subject%3A%28+IPR+call+prior+to+WGLC+-+A+Common+YAN
G+Data+Model+for+Scheduling%29&qdr=a&start_date=)
The working group last call ends on January 31st.
Please send your comments to the working group mailing list.
Positive comments, e.g., "I've reviewed this document and believe it is
ready for publication", are welcome!
This is useful and important, even from authors.
Thank you,
James (Document shepherd)
_______________________________________________
netmod mailing list -- [email protected]
To unsubscribe send an email to [email protected]