module ietf-module-tags {
yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:ietf-module-tags";
prefix tags;
import ietf-yang-types {
prefix yang;
}
organization
"IETF NetMod Working Group (NetMod)";
contact
"WG Web:
WG List:
Author: Christian Hopps
Author: Lou Berger
Author: Dean Bogdanovic
";
// RFC Ed.: replace XXXX with actual RFC number and
// remove this note.
description
"This module describes a mechanism associating tags with YANG
modules. Tags may be IANA assigned or privately defined.
Copyright (c) 2018 IETF Trust and the persons identified as
authors of the code. All rights reserved.
Redistribution and use in source and binary forms, with or
without modification, is permitted pursuant to, and subject to
the license terms contained in, the Simplified BSD License set
forth in Section 4.c of the IETF Trust's Legal Provisions
Relating to IETF Documents
(https://trustee.ietf.org/license-info).
The key words 'MUST', 'MUST NOT', 'REQUIRED', 'SHALL', 'SHALL
NOT', 'SHOULD', 'SHOULD NOT', 'RECOMMENDED', 'NOT RECOMMENDED',
'MAY', and 'OPTIONAL' in this document are to be interpreted as
described in BCP 14 [RFC2119] [RFC8174] when, and only when,
they appear in all capitals, as shown here.
This version of this YANG module is part of RFC XXXX
(https://tools.ietf.org/html/rfcXXXX); see the RFC itself for
full legal notices.";
// RFC Ed.: update the date below with the date of RFC publication
// and RFC number and remove this note.
revision 2019-05-03 {
description
"Initial revision.";
reference "RFC XXXX: YANG Module Tags";
}
typedef tag {
type string {
length "1..max";
pattern '[\S ]+';
}
description
"A tag is a type 'string' value that does not include carriage
return, newline or tab characters. It SHOULD begin with a
registered prefix; however, tags without a registered prefix
SHOULD NOT be treated as invalid.";
}
extension module-tag {
argument tag;
description
"The argument 'tag' is of type 'tag'. This extension statement
is used by module authors to indicate the tags that SHOULD be
added automatically by the system. As such the origin of the
value for the pre-defined tags should be set to 'system'
[RFC8342].";
}
container module-tags {
description
"Contains the list of modules and their associated tags";
list module {
key "name";
description
"A list of modules and their associated tags";
leaf name {
type yang:yang-identifier;
mandatory true;
description
"The YANG module name.";
}
leaf-list tag {
type tag;
description
"Tags associated with the module. See the IANA 'YANG Module
Tag Prefixes' registry for reserved prefixes and the IANA
'IETF YANG Module Tags' registry for IETF tags.
The 'operational' state [RFC8342] view of this list is
constructed using the following steps:
1) System tags (i.e., tags of 'system' origin) are added.
2) User configured tags (i.e., tags of 'intended' origin)
are added.
3) Any tag that is equal to a masked-tag is removed.";
}
leaf-list masked-tag {
type tag;
description
"The list of tags that should not be associated with this
module. The user can remove (mask) tags from the
operational state datastore [RFC8342] by adding them to
this list. It is not an error to add tags to this list
that are not associated with the module, but they have no
operational effect.";
}
}
}
}