Add support for RFC8819 "module-tag" extension
[yangtools.git] / model / rfc8819-model-api / src / main / java / org / opendaylight / yangtools / rfc8819 / model / api / IetfTags.java
1 /*
2  * Copyright (c) 2022 PANTHEON.tech, s.r.o. and others.  All rights reserved.
3  *
4  * This program and the accompanying materials are made available under the
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6  * and is available at http://www.eclipse.org/legal/epl-v10.html
7  */
8 package org.opendaylight.yangtools.rfc8819.model.api;
9
10 import org.eclipse.jdt.annotation.NonNullByDefault;
11
12 /**
13  * IETF YANG Module Tags Registry, as defined in
14  * <a href="https://datatracker.ietf.org/doc/html/rfc8819#section-7.2">RFC8819</a> section 7.2, table 2.
15  *
16  * <p>
17  * This registry allocates tags that have the registered prefix "ietf:".
18  * New values should be well considered and not achievable through a
19  * combination of already existing IETF tags.  IANA assigned tags must
20  * conform to Net-Unicode as defined in
21  * <a href="https://datatracker.ietf.org/doc/html/rfc5198">RFC5198</a>, and they shall not
22  * need normalization.
23  */
24 @NonNullByDefault
25 public final class IetfTags {
26     /**
27      * {@code ietf:network-element-class} {@link IetfTags}.
28      * <pre>
29      *    Network element as defined in <a href="https://datatracker.ietf.org/doc/html/rfc8199">RFC8199</a>.
30      * </pre>
31      */
32     public static final Tag NETWORK_ELEMENT_CLASS = new Tag("ietf:network-element-class").intern();
33     /**
34      * {@code ietf:network-service-class} {@link IetfTags}
35      * <pre>
36      *    Network element as defined in <a href="https://datatracker.ietf.org/doc/html/rfc8199">RFC8199</a>.
37      * </pre>
38      */
39     public static final Tag NETWORK_SERVICE_CLASS = new Tag("ietf:network-service-class").intern();
40     /**
41      * {@code ietf:sdo-defined-class} {@link IetfTags}
42      * <pre>
43      *    Module is defined by a standards organization.
44      * </pre>
45      */
46     public static final Tag SDO_DEFINED_CLASS = new Tag("ietf:sdo-defined-class").intern();
47     /**
48      * {@code ietf:vendor-defined-class} {@link IetfTags}
49      * <pre>
50      *    Module is defined by a vendor.
51      * </pre>
52      */
53     public static final Tag VENDOR_DEFINED_CLASS = new Tag("ietf:vendor-defined-class").intern();
54     /**
55      * {@code ietf:user-defined-class} {@link IetfTags}
56      * <pre>
57      *    Module is defined by the user.
58      * </pre>
59      */
60     public static final Tag USER_DEFINED_CLASS = new Tag("ietf:user-defined-class").intern();
61     /**
62      * {@code ietf:hardware} {@link IetfTags}
63      * <pre>
64      *    Relates to hardware (e.g., inventory).
65      * </pre>
66      */
67     public static final Tag HARDWARE = new Tag("ietf:hardware").intern();
68     /**
69      * {@code ietf:software} {@link IetfTags}
70      * <pre>
71      *    Relates to software (e.g., installed OS).
72      * </pre>
73      */
74     public static final Tag SOFTWARE = new Tag("ietf:software").intern();
75     /**
76      * {@code ietf:protocol} {@link IetfTags}
77      * <pre>
78      *    Represents a protocol (often combined with another tag to refine).
79      * </pre>
80      */
81     public static final Tag PROTOCOL = new Tag("ietf:protocol").intern();
82     /**
83      * {@code ietf:qos} {@link IetfTags}
84      * <pre>
85      *    Relates to quality of service.
86      * </pre>
87      */
88     public static final Tag QOS = new Tag("ietf:qos").intern();
89     /**
90      * {@code ietf:network-service-app} {@link IetfTags}
91      * <pre>
92      *    Relates to a network service application (e.g., an NTP server, DNS server, DHCP server, etc.).
93      * </pre>
94      */
95     public static final Tag NETWORK_SERVICE_APP = new Tag("ietf:network-service-app").intern();
96     /**
97      * {@code ietf:system-management} {@link IetfTags}
98      * <pre>
99      *    Relates to system management (e.g., a system management protocol such as syslog, TACAC+, SNMP, NETCONF, etc.).
100      * </pre>
101      */
102     public static final Tag SYSTEM_MANAGEMENT = new Tag("ietf:system-management").intern();
103     /**
104      * {@code ietf:oam} {@link IetfTags}
105      * <pre>
106      *    Relates to Operations, Administration, and Maintenance (e.g., BFD).
107      * </pre>
108      */
109     public static final Tag OAM = new Tag("ietf:oam").intern();
110     /**
111      * {@code ietf:routing} {@link IetfTags}
112      * <pre>
113      *    Relates to routing.
114      * </pre>
115      */
116     public static final Tag ROUTING = new Tag("ietf:routing").intern();
117     /**
118      * {@code ietf:security} {@link IetfTags}
119      * <pre>
120      *    Relates to security.
121      * </pre>
122      */
123     public static final Tag SECURITY = new Tag("ietf:security").intern();
124     /**
125      * {@code ietf:signaling} {@link IetfTags}
126      * <pre>
127      *    Relates to control-plane signaling.
128      * </pre>
129      */
130     public static final Tag SIGNALING = new Tag("ietf:signaling").intern();
131     /**
132      * {@code ietf:link-management} {@link IetfTags}
133      * <pre>
134      *    Relates to link management.
135      * </pre>
136      */
137     public static final Tag LINK_MANAGEMENT = new Tag("ietf:link-management").intern();
138
139     private IetfTags() {
140         // Hidden on purpose
141     }
142 }