1 module tapi-streaming {
\r
3 namespace "urn:onf:otcc:yang:tapi-streaming";
\r
4 prefix tapi-streaming;
\r
8 import tapi-connectivity {
\r
9 prefix tapi-connectivity;
\r
11 import tapi-equipment {
\r
12 prefix tapi-equipment;
\r
17 import tapi-path-computation {
\r
18 prefix tapi-path-computation;
\r
20 import tapi-topology {
\r
21 prefix tapi-topology;
\r
23 import tapi-virtual-network {
\r
24 prefix tapi-virtual-network;
\r
26 organization "ONF OTCC (Open Transport Configuration & Control) Project";
\r
28 Project Web: <https://urldefense.com/v3/__https://wiki.opennetworking.org/display/OTCC/TAPI__;!!OSsGDw!bx-l35NqfQHpJ8R_DmXfi2NX2ll5dMl9VbK5aS_m3ZShiVoz74Ur_yiFzE6g$ >
\r
29 Project List: <mailto:transport-api@opennetworking.org>
\r
30 Editor: Karthik Sethuraman <mailto:karthik.sethuraman@necam.com>
\r
31 Andrea Mazzin <mailto:andrea.mazzini@nokia.com>
\r
32 Arturo Mayoral <mailto:arturo.mayoral@telefonica.com>
\r
33 Nigel Davis <mailto:ndavis@ciena.com>";
\r
34 description "This module contains TAPI Streaming Model definitions.
\r
35 Source: TapiStreaming.uml
\r
36 - The TAPI YANG models included in this TAPI release are a *normative* part of the TAPI SDK.
\r
37 - The YANG specifications have been generated from the corresponding UML model using the [ONF EAGLE UML2YANG mapping tool]
\r
38 <https://urldefense.com/v3/__https://github.com/OpenNetworkingFoundation/EagleUmlYang__;!!OSsGDw!bx-l35NqfQHpJ8R_DmXfi2NX2ll5dMl9VbK5aS_m3ZShiVoz74Ur_6pxiNxl$ >
\r
39 and further edited manually to comply with the [ONF IISOMI UML2YANG mapping guidelines]
\r
40 <https://urldefense.com/v3/__https://wiki.opennetworking.org/display/OIMT/UML*-*YANG*Guidelines__;Kysr!!OSsGDw!bx-l35NqfQHpJ8R_DmXfi2NX2ll5dMl9VbK5aS_m3ZShiVoz74Ur_wxKUbJ_$ >
\r
41 - Status of YANG model artifacts can be determined by referring to the corresponding UML artifacts.
\r
42 As described in the UML models, some artifacts are considered *experimental*, and thus the corresponding YANG artifacts.
\r
43 - The ONF TAPI release process does not guarantee backward compatibility of YANG models across major versions of TAPI releases.
\r
44 The YANG model backward compatibility criteria are outlined in section 11 of <https://urldefense.com/v3/__https://tools.ietf.org/html/rfc7950__;!!OSsGDw!bx-l35NqfQHpJ8R_DmXfi2NX2ll5dMl9VbK5aS_m3ZShiVoz74Ur_zcAY1P4$ >.
\r
45 YANG models included in this release may not be backward compatible with previous TAPI releases.
\r
46 Copyright (c) 2018 Open Networking Foundation (ONF). All rights reserved.
\r
47 License: This module is distributed under the Apache License 2.0.";
\r
48 revision 2020-06-16 {
\r
49 description "ONF Transport API version 2.1.3.
\r
50 - Comment typos corrected.
\r
51 - One attribute changed (sourcePrecesion/source-precesion --> sourcePrecision/source-precision).
\r
52 Changes included in this TAPI release (v2.1.3) are listed in
\r
53 <https://urldefense.com/v3/__https://github.com/OpenNetworkingFoundation/TAPI/blob/develop_v2_1/CHANGE_LOG/change-log.2.1.3.md__;!!OSsGDw!bx-l35NqfQHpJ8R_DmXfi2NX2ll5dMl9VbK5aS_m3ZShiVoz74Ur_xm1nx_D$ >";
\r
54 reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 7950, RFC 6087 and ONF TAPI UML model
\r
55 <https://urldefense.com/v3/__https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.1.0/UML__;!!OSsGDw!bx-l35NqfQHpJ8R_DmXfi2NX2ll5dMl9VbK5aS_m3ZShiVoz74Ur_8UH3XnH$ >";
\r
57 revision 2019-07-16 {
\r
58 description "ONF Transport API version 2.1.2.
\r
59 Changes included in this TAPI release (v2.1.2) are listed in
\r
60 <https://urldefense.com/v3/__https://github.com/OpenNetworkingFoundation/TAPI/blob/develop_v2_1/CHANGE_LOG/change-log.2.1.2.md__;!!OSsGDw!bx-l35NqfQHpJ8R_DmXfi2NX2ll5dMl9VbK5aS_m3ZShiVoz74Ur_0xFu4bN$ >";
\r
61 reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 7950, RFC 6087 and ONF TAPI UML model
\r
62 <https://urldefense.com/v3/__https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.1.0/UML__;!!OSsGDw!bx-l35NqfQHpJ8R_DmXfi2NX2ll5dMl9VbK5aS_m3ZShiVoz74Ur_8UH3XnH$ >";
\r
64 revision 2018-12-10 {
\r
65 description "ONF Transport API version 2.1.1.
\r
66 Changes included in this TAPI release (v2.1.1) are listed in
\r
67 <https://urldefense.com/v3/__https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/CHANGE_LOG/change-log.2.1.1.md__;!!OSsGDw!bx-l35NqfQHpJ8R_DmXfi2NX2ll5dMl9VbK5aS_m3ZShiVoz74Ur__2p0od1$ >";
\r
68 reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 7950, RFC 6087 and ONF TAPI UML model
\r
69 <https://urldefense.com/v3/__https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.1.0/UML__;!!OSsGDw!bx-l35NqfQHpJ8R_DmXfi2NX2ll5dMl9VbK5aS_m3ZShiVoz74Ur_8UH3XnH$ >";
\r
71 revision 2018-10-16 {
\r
72 description "ONF Transport API version 2.1.0.
\r
73 Changes included in this TAPI release (v2.1.0) are listed in
\r
74 <https://urldefense.com/v3/__https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/CHANGE_LOG/change-log.2.1.0.md__;!!OSsGDw!bx-l35NqfQHpJ8R_DmXfi2NX2ll5dMl9VbK5aS_m3ZShiVoz74Ur_4DGi8ul$ >";
\r
75 reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 7950, RFC 6087 and ONF TAPI UML model
\r
76 <https://urldefense.com/v3/__https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.1.0/UML__;!!OSsGDw!bx-l35NqfQHpJ8R_DmXfi2NX2ll5dMl9VbK5aS_m3ZShiVoz74Ur_8UH3XnH$ >";
\r
78 revision 2018-03-07 {
\r
79 description "ONF Transport API version 2.0.2
\r
80 This YANG module has been generated from the TAPI UML Model using the IISOMI-Eagle xmi2yang mapping tool.
\r
81 Changes in this revision: <https://urldefense.com/v3/__https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/CHANGE_LOG/change-log.2.0.2.md__;!!OSsGDw!bx-l35NqfQHpJ8R_DmXfi2NX2ll5dMl9VbK5aS_m3ZShiVoz74Ur_8KlxwJZ$ >";
\r
82 reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 6020, RFC 6087 and ONF TAPI UML model
\r
83 <https://urldefense.com/v3/__https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.0.2/UML__;!!OSsGDw!bx-l35NqfQHpJ8R_DmXfi2NX2ll5dMl9VbK5aS_m3ZShiVoz74Ur_-hMD5Xl$ >";
\r
85 revision 2018-02-16 {
\r
86 description "ONF Transport API version 2.0.1
\r
87 This YANG module has been generated from the TAPI UML Model using the IISOMI-Eagle xmi2yang mapping tool.
\r
88 Changes in this revision: <https://urldefense.com/v3/__https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/CHANGE_LOG/change-log.2.0.1.md__;!!OSsGDw!bx-l35NqfQHpJ8R_DmXfi2NX2ll5dMl9VbK5aS_m3ZShiVoz74Ur__C1vuym$ >";
\r
89 reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 6020, RFC 6087 and ONF TAPI UML model
\r
90 <https://urldefense.com/v3/__https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.0.1/UML__;!!OSsGDw!bx-l35NqfQHpJ8R_DmXfi2NX2ll5dMl9VbK5aS_m3ZShiVoz74Ur_5DYNwzZ$ >";
\r
92 revision 2018-01-02 {
\r
93 description "ONF Transport API version 2.0.0
\r
94 This YANG module has been generated from the TAPI UML Model using the IISOMI-Eagle xmi2yang mapping tool.
\r
95 Changes in this revision: <https://urldefense.com/v3/__https://github.com/OpenNetworkingFoundation/TAPI/blob/develop/CHANGE_LOG/change-log.2.0.0.md__;!!OSsGDw!bx-l35NqfQHpJ8R_DmXfi2NX2ll5dMl9VbK5aS_m3ZShiVoz74Ur_1xZSBRA$ >";
\r
96 reference "ONF-TR-527, ONF-TR-512, ONF-TR-531, RFC 6020, RFC 6087 and ONF TAPI UML model
\r
97 <https://urldefense.com/v3/__https://github.com/OpenNetworkingFoundation/TAPI/tree/v2.0.0/UML__;!!OSsGDw!bx-l35NqfQHpJ8R_DmXfi2NX2ll5dMl9VbK5aS_m3ZShiVoz74Ur_xt-GtqY$ >";
\r
99 feature tapi-streaming {
\r
100 description "Support for streaming of the information in the specific TAPI context, in terms of stream-records. Through augmentation of context with stream-context, allows the client to determine what specific stream connections are supported and which are currently available to connect to. Offers the ability to identify and use various log strategies and stream connection protocols.";
\r
102 feature tapi-streaming-admin {
\r
103 description "Support for monitoring of active connections to available streams. Through augmentation of context with stream-admin-context, allows the admin client to get details from monitors of active connections to provide a view of whether the client of the monitored stream is having difficult absorbing the stream. Will usually be used in a tapi context for a stream admin client. Will usually be used together with the tapi-streaming feature so that the stream monitors from one stream could be provided through another stream .";
\r
105 augment "/tapi-common:context/tapi-streaming:stream-context/tapi-streaming:supported-stream-type" {
\r
106 if-feature tapi-streaming;
\r
107 container compacted-log-details {
\r
108 uses compacted-log-details;
\r
109 description "none";
\r
111 description "none";
\r
113 augment "/tapi-streaming:stream-record/tapi-streaming:log-record/tapi-streaming:log-record-body/tapi-streaming:condition-detector" {
\r
114 if-feature tapi-streaming;
\r
115 container alarm-condition-detector-detail {
\r
116 uses alarm-condition-detector-detail;
\r
117 description "none";
\r
119 description "none";
\r
121 augment "/tapi-streaming:stream-record/tapi-streaming:log-record/tapi-streaming:log-record-body" {
\r
122 when "tapi-streaming:record-content='SERVICE_INTERFACE_POINT'";
\r
123 if-feature tapi-streaming;
\r
124 container service-interface-point {
\r
125 uses tapi-common:service-interface-point;
\r
126 description "none";
\r
128 description "none";
\r
130 augment "/tapi-streaming:stream-record/tapi-streaming:log-record/tapi-streaming:log-record-body" {
\r
131 when "tapi-streaming:record-content='CONDITION_DETECTOR'";
\r
132 if-feature tapi-streaming;
\r
133 container condition-detector {
\r
134 uses condition-detector;
\r
135 description "none";
\r
137 description "none";
\r
139 augment "/tapi-streaming:stream-record/tapi-streaming:log-record/tapi-streaming:log-record-body" {
\r
140 when "tapi-streaming:record-content='ANY_CLASS'";
\r
141 if-feature tapi-streaming;
\r
142 container any-class {
\r
144 description "none";
\r
146 description "none";
\r
148 augment "/tapi-common:context" {
\r
149 if-feature tapi-streaming-admin;
\r
150 container stream-admin-context {
\r
151 uses stream-admin-context;
\r
152 description "none";
\r
154 description "none";
\r
156 augment "/tapi-common:context" {
\r
157 if-feature tapi-streaming;
\r
158 container stream-context {
\r
159 uses stream-context;
\r
160 description "none";
\r
162 description "none";
\r
164 augment "/tapi-common:context/tapi-streaming:stream-context/tapi-streaming:supported-stream-type" {
\r
165 if-feature tapi-streaming;
\r
166 container connection-protocol-details {
\r
167 uses connection-protocol-details;
\r
168 description "none";
\r
170 description "none";
\r
172 augment "/tapi-streaming:stream-record/tapi-streaming:log-record/tapi-streaming:log-record-body" {
\r
173 when "tapi-streaming:record-content='STREAM_MONITOR'";
\r
174 if-feature tapi-streaming-admin;
\r
175 container stream-monitor {
\r
176 uses stream-monitor;
\r
177 description "none";
\r
179 description "none";
\r
181 augment "/tapi-streaming:stream-record/tapi-streaming:log-record/tapi-streaming:log-record-body" {
\r
182 when "tapi-streaming:record-content='SUPPORTED_STREAM_TYPE'";
\r
183 if-feature tapi-streaming;
\r
184 container supported-stream-type {
\r
185 uses supported-stream-type;
\r
186 description "none";
\r
188 description "none";
\r
190 augment "/tapi-streaming:stream-record/tapi-streaming:log-record/tapi-streaming:log-record-body" {
\r
191 when "tapi-streaming:record-content='AVAILABLE_STREAM_TYPE'";
\r
192 if-feature tapi-streaming;
\r
193 container available-stream {
\r
194 uses available-stream;
\r
195 description "none";
\r
197 description "none";
\r
199 augment "/tapi-streaming:stream-record/tapi-streaming:log-record/tapi-streaming:log-record-body" {
\r
200 when "tapi-streaming:record-content='CONNECTION'";
\r
201 if-feature tapi-streaming;
\r
202 container connection {
\r
203 uses tapi-connectivity:connection;
\r
204 description "none";
\r
206 description "none";
\r
208 augment "/tapi-streaming:stream-record/tapi-streaming:log-record/tapi-streaming:log-record-body" {
\r
209 when "tapi-streaming:record-content='CONNECTION_END_POINT'";
\r
210 if-feature tapi-streaming;
\r
211 container connection-end-point {
\r
212 uses tapi-connectivity:connection-end-point;
\r
213 description "none";
\r
215 description "none";
\r
217 augment "/tapi-streaming:stream-record/tapi-streaming:log-record/tapi-streaming:log-record-body" {
\r
218 when "tapi-streaming:record-content='CONNECTIVITY_SERVICE'";
\r
219 if-feature tapi-streaming;
\r
220 container connectivity-service {
\r
221 uses tapi-connectivity:connectivity-service;
\r
222 description "none";
\r
224 description "none";
\r
226 augment "/tapi-streaming:stream-record/tapi-streaming:log-record/tapi-streaming:log-record-body" {
\r
227 when "tapi-streaming:record-content='CONNECTION_SERVICE_END_POINT'";
\r
228 if-feature tapi-streaming;
\r
229 container connectivity-service-end-point {
\r
230 uses tapi-connectivity:connectivity-service-end-point;
\r
231 description "none";
\r
233 description "none";
\r
235 augment "/tapi-streaming:stream-record/tapi-streaming:log-record/tapi-streaming:log-record-body" {
\r
236 when "tapi-streaming:record-content='ROUTE'";
\r
237 if-feature tapi-streaming;
\r
239 uses tapi-connectivity:route;
\r
240 description "none";
\r
242 description "none";
\r
244 augment "/tapi-streaming:stream-record/tapi-streaming:log-record/tapi-streaming:log-record-body" {
\r
245 when "tapi-streaming:record-content='SWITCH'";
\r
246 if-feature tapi-streaming;
\r
248 uses tapi-connectivity:switch;
\r
249 description "none";
\r
251 description "none";
\r
253 augment "/tapi-streaming:stream-record/tapi-streaming:log-record/tapi-streaming:log-record-body" {
\r
254 when "tapi-streaming:record-content='SWITCH_CONTROL'";
\r
255 if-feature tapi-streaming;
\r
256 container switch-control {
\r
257 uses tapi-connectivity:switch-control;
\r
258 description "none";
\r
260 description "none";
\r
262 augment "/tapi-streaming:stream-record/tapi-streaming:log-record/tapi-streaming:log-record-body" {
\r
263 when "tapi-streaming:record-content='EQUIPMENT'";
\r
264 if-feature tapi-streaming;
\r
265 container equipment {
\r
266 uses tapi-equipment:equipment;
\r
267 description "none";
\r
269 description "none";
\r
271 augment "/tapi-streaming:stream-record/tapi-streaming:log-record/tapi-streaming:log-record-body" {
\r
272 when "tapi-streaming:record-content='HOLDER'";
\r
273 if-feature tapi-streaming;
\r
275 uses tapi-equipment:holder;
\r
276 description "none";
\r
278 description "none";
\r
280 augment "/tapi-streaming:stream-record/tapi-streaming:log-record/tapi-streaming:log-record-body" {
\r
281 when "tapi-streaming:record-content='ACCESS_PORT'";
\r
282 if-feature tapi-streaming;
\r
283 container access-port {
\r
284 uses tapi-equipment:access-port;
\r
285 description "none";
\r
287 description "none";
\r
289 augment "/tapi-streaming:stream-record/tapi-streaming:log-record/tapi-streaming:log-record-body" {
\r
290 when "tapi-streaming:record-content='ABSTRACT_STRAND'";
\r
291 if-feature tapi-streaming;
\r
292 container abstract-strand {
\r
293 uses tapi-equipment:abstract-strand;
\r
294 description "none";
\r
296 description "none";
\r
298 augment "/tapi-streaming:stream-record/tapi-streaming:log-record/tapi-streaming:log-record-body" {
\r
299 when "tapi-streaming:record-content='DEVICE'";
\r
300 if-feature tapi-streaming;
\r
302 uses tapi-equipment:device;
\r
303 description "none";
\r
305 description "none";
\r
307 augment "/tapi-streaming:stream-record/tapi-streaming:log-record/tapi-streaming:log-record-body" {
\r
308 when "tapi-streaming:record-content='PHYSICAL_SPAN'";
\r
309 if-feature tapi-streaming;
\r
310 container physical-span {
\r
311 uses tapi-equipment:physical-span;
\r
312 description "none";
\r
314 description "none";
\r
316 augment "/tapi-streaming:stream-record/tapi-streaming:log-record/tapi-streaming:log-record-body" {
\r
317 when "tapi-streaming:record-content='MEG_END_POINT'";
\r
318 if-feature tapi-streaming;
\r
321 description "none";
\r
323 description "none";
\r
325 augment "/tapi-streaming:stream-record/tapi-streaming:log-record/tapi-streaming:log-record-body" {
\r
326 when "tapi-streaming:record-content='OAM_JOB'";
\r
327 if-feature tapi-streaming;
\r
328 container oam-job {
\r
329 uses tapi-oam:oam-job;
\r
330 description "none";
\r
332 description "none";
\r
334 augment "/tapi-streaming:stream-record/tapi-streaming:log-record/tapi-streaming:log-record-body" {
\r
335 when "tapi-streaming:record-content='MAINTENANCE_ENTITY_GROUP'";
\r
336 if-feature tapi-streaming;
\r
339 description "none";
\r
341 description "none";
\r
343 augment "/tapi-streaming:stream-record/tapi-streaming:log-record/tapi-streaming:log-record-body" {
\r
344 when "tapi-streaming:record-content='MEG_INTERMEDIATE_POINT'";
\r
345 if-feature tapi-streaming;
\r
348 description "none";
\r
350 description "none";
\r
352 augment "/tapi-streaming:stream-record/tapi-streaming:log-record/tapi-streaming:log-record-body" {
\r
353 when "tapi-streaming:record-content='OAM_SERVICE'";
\r
354 if-feature tapi-streaming;
\r
355 container oam-service {
\r
356 uses tapi-oam:oam-service;
\r
357 description "none";
\r
359 description "none";
\r
361 augment "/tapi-streaming:stream-record/tapi-streaming:log-record/tapi-streaming:log-record-body" {
\r
362 when "tapi-streaming:record-content='OAM_SERVICE_END_POINT'";
\r
363 if-feature tapi-streaming;
\r
364 container oam-service-end-point {
\r
365 uses tapi-oam:oam-service-end-point;
\r
366 description "none";
\r
368 description "none";
\r
370 augment "/tapi-streaming:stream-record/tapi-streaming:log-record/tapi-streaming:log-record-body" {
\r
371 when "tapi-streaming:record-content='PM_CURRENT_DATA'";
\r
372 if-feature tapi-streaming;
\r
373 container pm-current-data {
\r
374 uses tapi-oam:pm-current-data;
\r
375 description "none";
\r
377 description "none";
\r
379 augment "/tapi-streaming:stream-record/tapi-streaming:log-record/tapi-streaming:log-record-body" {
\r
380 when "tapi-streaming:record-content='PM_HISTORY'";
\r
381 if-feature tapi-streaming;
\r
382 container pm-history-data {
\r
383 uses tapi-oam:pm-history-data;
\r
384 description "none";
\r
386 description "none";
\r
388 augment "/tapi-streaming:stream-record/tapi-streaming:log-record/tapi-streaming:log-record-body" {
\r
389 when "tapi-streaming:record-content='OAM_PROFILE'";
\r
390 if-feature tapi-streaming;
\r
391 container oam-profile {
\r
392 uses tapi-oam:oam-profile;
\r
393 description "none";
\r
395 description "none";
\r
397 augment "/tapi-streaming:stream-record/tapi-streaming:log-record/tapi-streaming:log-record-body" {
\r
398 when "tapi-streaming:record-content='PM_THRESHOLD_DATA'";
\r
399 if-feature tapi-streaming;
\r
400 container pm-threshold-data {
\r
401 uses tapi-oam:pm-threshold-data;
\r
402 description "none";
\r
404 description "none";
\r
406 augment "/tapi-streaming:stream-record/tapi-streaming:log-record/tapi-streaming:log-record-body" {
\r
407 when "tapi-streaming:record-content='PM_BIN_DATA'";
\r
408 if-feature tapi-streaming;
\r
409 container pm-bin-data {
\r
410 uses tapi-oam:pm-bin-data;
\r
411 description "none";
\r
413 description "none";
\r
415 augment "/tapi-streaming:stream-record/tapi-streaming:log-record/tapi-streaming:log-record-body" {
\r
416 when "tapi-streaming:record-content='PATH'";
\r
417 if-feature tapi-streaming;
\r
419 uses tapi-path-computation:path;
\r
420 description "none";
\r
422 description "none";
\r
424 augment "/tapi-streaming:stream-record/tapi-streaming:log-record/tapi-streaming:log-record-body" {
\r
425 when "tapi-streaming:record-content='PATH_COMPUTATION_SERVICE'";
\r
426 if-feature tapi-streaming;
\r
427 container path-computation-service {
\r
428 uses tapi-path-computation:path-computation-service;
\r
429 description "none";
\r
431 description "none";
\r
433 augment "/tapi-streaming:stream-record/tapi-streaming:log-record/tapi-streaming:log-record-body" {
\r
434 when "tapi-streaming:record-content='PATH_SERVICE_END_POINT'";
\r
435 if-feature tapi-streaming;
\r
436 container path-service-end-point {
\r
437 uses tapi-path-computation:path-service-end-point;
\r
438 description "none";
\r
440 description "none";
\r
442 augment "/tapi-streaming:stream-record/tapi-streaming:log-record/tapi-streaming:log-record-body" {
\r
443 when "tapi-streaming:record-content='PATH_OPTIMIZATION_CONSTRAINT'";
\r
444 if-feature tapi-streaming;
\r
445 container path-optimization-constraint {
\r
446 uses tapi-path-computation:path-optimization-constraint;
\r
447 description "none";
\r
449 description "none";
\r
451 augment "/tapi-streaming:stream-record/tapi-streaming:log-record/tapi-streaming:log-record-body" {
\r
452 when "tapi-streaming:record-content='PATH_OBJECTIVE_FUNCTION'";
\r
453 if-feature tapi-streaming;
\r
454 container path-objective-function {
\r
455 uses tapi-path-computation:path-objective-function;
\r
456 description "none";
\r
458 description "none";
\r
460 augment "/tapi-streaming:stream-record/tapi-streaming:log-record/tapi-streaming:log-record-body" {
\r
461 when "tapi-streaming:record-content='LINK'";
\r
462 if-feature tapi-streaming;
\r
464 uses tapi-topology:link;
\r
465 description "none";
\r
467 description "none";
\r
469 augment "/tapi-streaming:stream-record/tapi-streaming:log-record/tapi-streaming:log-record-body" {
\r
470 when "tapi-streaming:record-content='NODE'";
\r
471 if-feature tapi-streaming;
\r
473 uses tapi-topology:node;
\r
474 description "none";
\r
476 description "none";
\r
478 augment "/tapi-streaming:stream-record/tapi-streaming:log-record/tapi-streaming:log-record-body" {
\r
479 when "tapi-streaming:record-content='TOPOLOGY'";
\r
480 if-feature tapi-streaming;
\r
481 container topology {
\r
482 uses tapi-topology:topology;
\r
483 description "none";
\r
485 description "none";
\r
487 augment "/tapi-streaming:stream-record/tapi-streaming:log-record/tapi-streaming:log-record-body" {
\r
488 when "tapi-streaming:record-content='NODE_EDGE_POINT'";
\r
489 if-feature tapi-streaming;
\r
490 container node-edge-point {
\r
491 uses tapi-topology:node-edge-point;
\r
492 description "none";
\r
494 description "none";
\r
496 augment "/tapi-streaming:stream-record/tapi-streaming:log-record/tapi-streaming:log-record-body" {
\r
497 when "tapi-streaming:record-content='RULE'";
\r
498 if-feature tapi-streaming;
\r
500 uses tapi-topology:rule;
\r
501 description "none";
\r
503 description "none";
\r
505 augment "/tapi-streaming:stream-record/tapi-streaming:log-record/tapi-streaming:log-record-body" {
\r
506 when "tapi-streaming:record-content='NODE_RULE_GROUP'";
\r
507 if-feature tapi-streaming;
\r
508 container node-rule-group {
\r
509 uses tapi-topology:node-rule-group;
\r
510 description "none";
\r
512 description "none";
\r
514 augment "/tapi-streaming:stream-record/tapi-streaming:log-record/tapi-streaming:log-record-body" {
\r
515 when "tapi-streaming:record-content='INTER_RULE_GROUP'";
\r
516 if-feature tapi-streaming;
\r
517 container inter-rule-group {
\r
518 uses tapi-topology:inter-rule-group;
\r
519 description "none";
\r
521 description "none";
\r
523 augment "/tapi-streaming:stream-record/tapi-streaming:log-record/tapi-streaming:log-record-body" {
\r
524 when "tapi-streaming:record-content='NETWORK_TOPOLOGY_SERVICE'";
\r
525 if-feature tapi-streaming;
\r
526 container network-topology-service {
\r
527 uses tapi-topology:network-topology-service;
\r
528 description "none";
\r
530 description "none";
\r
532 augment "/tapi-streaming:stream-record/tapi-streaming:log-record/tapi-streaming:log-record-body" {
\r
533 when "tapi-streaming:record-content='VIRTUAL_NETWORK_SERVICE'";
\r
534 if-feature tapi-streaming;
\r
535 container virtual-network-service {
\r
536 uses tapi-virtual-network:virtual-network-service;
\r
537 description "none";
\r
539 description "none";
\r
541 augment "/tapi-streaming:stream-record/tapi-streaming:log-record/tapi-streaming:log-record-body" {
\r
542 when "tapi-streaming:record-content='VIRTUAL_NETWORK_SERVICE_ENDPOINT'";
\r
543 if-feature tapi-streaming;
\r
544 container virtual-network-service-end-point {
\r
545 uses tapi-virtual-network:virtual-network-service-end-point;
\r
546 description "none";
\r
548 description "none";
\r
550 augment "/tapi-streaming:stream-record/tapi-streaming:log-record/tapi-streaming:log-record-body" {
\r
551 when "tapi-streaming:record-content='VIRTUAL_NETWORK_CONSTRAINT'";
\r
552 if-feature tapi-streaming;
\r
553 container virtual-network-constraint {
\r
554 uses tapi-virtual-network:virtual-network-constraint;
\r
555 description "none";
\r
557 description "none";
\r
560 /**************************
\r
561 * definitions of refrences
\r
562 **************************/
\r
563 grouping available-stream-ref {
\r
564 leaf available-stream-uuid{
\r
566 path '/tapi-common:context/tapi-streaming:stream-context/tapi-streaming:available-stream/tapi-streaming:uuid';
\r
568 description "none";
\r
570 description "none";
\r
572 grouping supported-stream-type-ref {
\r
573 leaf supported-stream-type-uuid {
\r
575 path '/tapi-common:context/tapi-streaming:stream-context/tapi-streaming:supported-stream-type/tapi-streaming:uuid';
\r
577 description "none";
\r
579 description "none";
\r
582 /**************************
\r
583 * package type-definitions
\r
584 **************************/
\r
585 identity ALARM_DETECTOR_STATE {
\r
586 description "none";
\r
588 identity ALARM_DETECTOR_STATE_ACTIVE {
\r
589 base ALARM_DETECTOR_STATE;
\r
590 description "The detector is indicating the operation of the monitored entity is not within acceptable bounds with respect to the specific condition measured.
\r
591 If INTERMITTENT is supported there may be a requirement for persisted unacceptable operation after a problem occurs before ACTIVE is declared. An alternative may be to declare INTERMITTENT.
\r
592 Where INTERMITTENT is supported, ACTIVE indicates the stable presence of a problem.";
\r
594 identity ALARM_DETECTOR_STATE_INTERMITTENT {
\r
595 base ALARM_DETECTOR_STATE;
\r
596 description "The detector is indicating the operation of the monitored entity is intermittently not within acceptable bounds with respect to the specific condition measured.
\r
597 INTERMITTENT support is optional. Where it is supported there may be a requirement for persisted unacceptable operation after a problem occurs before ACTIVE or INTERMITTENT is declared.";
\r
599 identity ALARM_DETECTOR_STATE_CLEAR {
\r
600 base ALARM_DETECTOR_STATE;
\r
601 description "The detector is indicating the operation of the monitored entity is within acceptable bounds with respect to the specific condition measured.
\r
602 There may be a requirement for persisted acceptable operation after a problem before clear is declared etc.
\r
603 For a Compacted Log solution a CLEAR alarm will be considered as a DELETE ChangeType in the RecordBody.
\r
604 Hence a CLEAR will also cause a Tombstone record in a Compacted Log solution.";
\r
606 identity LOG_RECORD_STRATEGY {
\r
607 description "none";
\r
609 identity LOG_RECORD_STRATEGY_WHOLE_ENTITY_ON_CHANGE {
\r
610 base LOG_RECORD_STRATEGY;
\r
611 description "A record provides a snapshot of a whole entity and a snapshot is taken on each change.
\r
612 The record includes all properties and values whether they have changed or not.";
\r
614 identity LOG_RECORD_STRATEGY_CHANGE_ONLY {
\r
615 base LOG_RECORD_STRATEGY;
\r
616 description "Each record only provides a view of the changes that have occurred (on a per entity change basis).
\r
617 E.g., the log only includes the attribute that has changed and not other attributes that have not changed.";
\r
619 identity LOG_RECORD_STRATEGY_WHOLE_ENTITY_PERIODIC {
\r
620 base LOG_RECORD_STRATEGY;
\r
621 description "A snapshot of an entity is recorded periodically regardless of whether there has been change or not.";
\r
623 identity LOG_STORAGE_STRATEGY {
\r
624 description "none";
\r
626 identity LOG_STORAGE_STRATEGY_COMPACTED {
\r
627 base LOG_STORAGE_STRATEGY;
\r
628 description "The log uses some mechanism to remove noisy detail whilst enabling the client to achieve eventual consistency (alignment) with current state.";
\r
630 identity LOG_STORAGE_STRATEGY_TRUNCATED {
\r
631 base LOG_STORAGE_STRATEGY;
\r
632 description "The log only maintains recent records and disposes of old records.
\r
633 This log does not alone enable the client to achieve alignment with current state.";
\r
635 identity LOG_STORAGE_STRATEGY_FULL_HISTORY {
\r
636 base LOG_STORAGE_STRATEGY;
\r
637 description "Maintains a history from system initiation with no missing records.
\r
638 Provides initial state at the beginning of the history";
\r
640 identity LOG_STORAGE_STRATEGY_FULL_HISTORY_WITH_PERIODIC_BASELINE {
\r
641 base LOG_STORAGE_STRATEGY;
\r
642 description "Provides a history with initial state and periodic/occasional statements of current state at a particular point in time.";
\r
644 identity STREAM_STATE {
\r
645 description "none";
\r
647 identity STREAM_STATE_ALIGNING {
\r
649 description "The log that underpins the stream is aligning with other backend services and hence may not be providing full service.
\r
650 If events are provided, they will be completely valid.";
\r
652 identity STREAM_STATE_ACTIVE {
\r
654 description "The stream is operating such that if a client connects records will be provided as per back pressure etc.";
\r
656 identity STREAM_STATE_PAUSED {
\r
658 description "Although the stream is available it has been paused by the administrator such that the records are being appended to the log but a new client will not receive any events whilst the stream is paused.";
\r
660 identity STREAM_STATE_TERMINATED {
\r
662 description "The stream is essentially no longer available. It will be removed from the AvailableStreams list shortly.";
\r
664 identity RECORD_TYPE {
\r
665 description "none";
\r
667 identity RECORD_TYPE_CREATE_UPDATE {
\r
669 description "The record includes a create or update.
\r
670 Where there is an update in a non-compacted log the information with be sparse (e.g., a single attribute) and about an entity that is already known.";
\r
672 identity RECORD_TYPE_DELETE {
\r
674 description "The record is about a delete.
\r
675 The record may have a LogRecordHeader and a LogRecordBody but no augmented content.
\r
676 The entityKey should be sufficient to identify the entity to be deleted.
\r
677 Under certain circumstances there may be class content in the LogRecordBody.";
\r
679 identity RECORD_TYPE_TOMBSTONE {
\r
681 description "Used in a Compacted log to remove old records and truncate deletion history.
\r
682 Is only a LogRecordHeader with no LogRecordBody.";
\r
684 identity SOURCE_PRECISION {
\r
685 description "none";
\r
687 identity SOURCE_PRECISION_UNKNOWN {
\r
688 base SOURCE_PRECISION;
\r
689 description "The state of the clock at the event source is not known.
\r
690 The view of time of day at the source is suspect.";
\r
692 identity SOURCE_PRECISION_FREE_RUNNING {
\r
693 base SOURCE_PRECISION;
\r
694 description "The clock at the event source is free-running.
\r
695 The view of time of day at the source may be significantly different from that at other sources.";
\r
697 identity SOURCE_PRECISION_SYNCHRONIZED {
\r
698 base SOURCE_PRECISION;
\r
699 description "The clock at the event source is appropriately synchroniZed to the timing master.
\r
700 The view of time of day at the source should be essentially the same as that at other time-synchronized sources.";
\r
703 description "none";
\r
705 identity SPREAD_AT {
\r
707 description "The event occurred at a particular time.";
\r
709 identity SPREAD_BEFORE {
\r
711 description "The event occurred before a particular time.";
\r
713 identity SPREAD_AFTER {
\r
715 description "The event occurred after a particular time.";
\r
717 identity SPREAD_BETWEEN {
\r
719 description "The event occurred between two stated times.";
\r
721 identity CONDITION_DETECTOR_TYPE {
\r
722 description "none";
\r
724 identity CONDITION_DETECTOR_TYPE_ALARM_DETECTOR {
\r
725 base CONDITION_DETECTOR_TYPE;
\r
726 description "A type of detector used for reporting problems.
\r
727 The underlying raw detector is two state from the perspective of the monitored condition.
\r
728 The detector is asymmetric in nature.
\r
729 One state indicates that there is a problem and the other state indicates that there is no problem.";
\r
731 identity CONDITION_DETECTOR_TYPE_EVENT_DETECTOR {
\r
732 base CONDITION_DETECTOR_TYPE;
\r
733 description "A type of detector used for reporting events.";
\r
735 typedef alarm-detector-state {
\r
737 base ALARM_DETECTOR_STATE;
\r
739 description "The state of the processed Boolean alarm detector.
\r
740 The source applies some analysis to the raw detector to determine the state.
\r
741 The processing by the source my vary.";
\r
743 grouping legacy-properties {
\r
744 leaf perceived-severity {
\r
745 type perceived-severity;
\r
746 description "A device will provide an indication of importance for each alarm.
\r
747 This property indicates the importance.
\r
748 In some cases, the severity may change through the life of an active alarm.";
\r
750 leaf service-affect {
\r
751 type service-affect;
\r
752 description "Some devices will indicate, from its very narrow viewpoint, whether service has been impacted or not.
\r
753 This property carries this detail.";
\r
755 leaf is-acknowledged {
\r
757 description "Devices offer a capability to acknowledge alarms (to stop the bells ringing).
\r
758 Often an EMS will offer a similar capability.
\r
759 This property reflects the current acknowledge state.";
\r
761 leaf-list additional-alarm-info {
\r
763 description "Often, alarms raised by devices have additional information.
\r
764 This property can be used to convey this.";
\r
766 description "At this point in the evolution of control solutions LegacyProperties are probably mandatory, however, it is anticipated that as control solutions advance the LegacyProperties will become irrelevant.";
\r
768 typedef log-record-strategy {
\r
770 base LOG_RECORD_STRATEGY;
\r
772 description "Defines the different approaches for logging information about an event covering the log trigger and the log content.";
\r
774 typedef log-storage-strategy {
\r
776 base LOG_STORAGE_STRATEGY;
\r
778 description "Defines the storage (record retention) approach.";
\r
780 typedef object-class-identifier {
\r
787 description "Connection.
\r
794 enum CONNECTION_END_POINT {
\r
795 description "ConnectionEndPoint.
\r
798 enum CONNECTIVITY_SERVICE {
\r
799 description "ConnectivityService.
\r
802 enum INTER_RULE_GROUP {
\r
803 description "InterRuleGroup.
\r
806 enum MAINTENANCE_ENTITY {
\r
807 description "MaintenanceEntity.
\r
810 enum MAINTENANCE_ENTITY_GROUP {
\r
814 enum MEG_END_POINT {
\r
817 For streaming this requires parentAddress (when reporting the entity alone) or a combination of measuredEntityUuid and measuredEntityLocalId when reporting conditions.";
\r
819 enum MEG_INTERMEDIATE_POINT {
\r
822 For streaming this requires parentAddress (when reporting the entity alone) or a combination of measuredEntityUuid and measuredEntityLocalId when reporting conditions. ";
\r
824 enum NODE_EDGE_POINT {
\r
825 description "NodeEdgePoint.
\r
829 description "OamJob.
\r
836 enum NODE_RULE_GROUP {
\r
837 description "NodeRuleGroup.
\r
840 enum PATH_COMPUTATION_SERVICE {
\r
841 description "PathComputationService.
\r
845 description "Route.
\r
847 For streaming this requires parentAddress (when reporting the entity alone) or a combination of measuredEntityUuid and measuredEntityLocalId when reporting conditions";
\r
852 For streaming this requires parentAddress (when reporting the entity alone) or a combination of measuredEntityUuid and measuredEntityLocalId when reporting conditions";
\r
854 enum SERVICE_INTERFACE_POINT {
\r
855 description "ServiceInterfacePoint.
\r
859 description "Switch.
\r
861 For streaming this requires parentAddress (when reporting the entity alone) or a combination of measuredEntityUuid and measuredEntityLocalId when reporting conditions";
\r
863 enum SWITCH_CONTROL {
\r
864 description "SwitchControl.
\r
868 description "Topology.
\r
871 enum VIRTUAL_NETWORK_SERVICE {
\r
872 description "VirtualNetworkService.
\r
876 description "OamProfile.
\r
880 description "OamService.
\r
883 enum CONNECTION_SPEC {
\r
884 description "ConnectionSpec.
\r
885 A class that is a representation of the definition that an instance of a Connection references. This has a globally unique id.";
\r
888 description "AccessPort.
\r
892 description "Device.
\r
895 enum PHYSICAL_SPAN {
\r
896 description "PhysicalSpan.
\r
900 description "Equipment.
\r
904 description "Holder.
\r
907 enum CONDITION_DETECTOR {
\r
908 description "ConditionDetector.
\r
909 Has an id approach that allows for the measured entity to have a NativeId, or UUID or ID combination.";
\r
911 enum AVAILABLE_STREAM {
\r
912 description "AvailableStream.
\r
915 enum STREAM_MONITOR {
\r
916 description "StreamMonitor.
\r
919 enum SUPPORTED_STREAM_TYPE {
\r
920 description "SupportedStream.
\r
923 enum NETWORK_TOPOLOGY_SERVICE {
\r
924 description "NetworkTopologyService.
\r
927 enum TAPI_CONTEXT {
\r
928 description "TapiContext.
\r
931 enum OAM_SERVICE_END_POINT {
\r
932 description "OamServiceEndPoint.
\r
933 Local class. For streaming this requires parentAddress (when reporting the entity alone) or a combination of measuredEntityUuid and measuredEntityLocalId when reporting conditions.";
\r
936 description "PmBinData.
\r
937 Local class. For streaming this requires parentAddress (when reporting the entity alone) or a combination of measuredEntityUuid and measuredEntityLocalId when reporting conditions.";
\r
939 enum PM_CURRENT_DATA {
\r
940 description "PmCurrentData.
\r
941 Local class. For streaming this requires parentAddress (when reporting the entity alone) or a combination of measuredEntityUuid and measuredEntityLocalId when reporting conditions.";
\r
943 enum PM_HISTORY_DATA {
\r
944 description "PmHistoryData.
\r
945 Local class. For streaming this requires parentAddress (when reporting the entity alone) or a combination of measuredEntityUuid and measuredEntityLocalId when reporting conditions.";
\r
947 enum PM_THRESHOLD_DATA {
\r
948 description "PmThresholdData.
\r
949 Local class. For streaming this requires parentAddress (when reporting the entity alone) or a combination of measuredEntityUuid and measuredEntityLocalId when reporting conditions.";
\r
951 enum CONNECTIVITY_SERVICE_END_POINT {
\r
952 description "ConnectivityServiceEndPoint.
\r
953 Local class. For streaming this requires parentAddress (when reporting the entity alone) or a combination of measuredEntityUuid and measuredEntityLocalId when reporting conditions.";
\r
955 enum ABSTRACT_STRAND {
\r
956 description "AbstractStrand.
\r
957 Local class. For streaming this requires parentAddress (when reporting the entity alone) or a combination of measuredEntityUuid and measuredEntityLocalId when reporting conditions.";
\r
959 enum PATH_OBJECTIVE_FUNCTION {
\r
960 description "PathObjectiveFunction.
\r
961 Local class. For streaming this requires parentAddress (when reporting the entity alone) or a combination of measuredEntityUuid and measuredEntityLocalId when reporting conditions.";
\r
963 enum PATH_OPTIMIZATION_CONSTRAINT {
\r
964 description "PathOptimizationConstraint.
\r
965 Local class. For streaming this requires parentAddress (when reporting the entity alone) or a combination of measuredEntityUuid and measuredEntityLocalId when reporting conditions.";
\r
967 enum PATH_SERVICE_END_POINT {
\r
968 description "PathServiceEndPoint.
\r
969 Local class. For streaming this requires parentAddress (when reporting the entity alone) or a combination of measuredEntityUuid and measuredEntityLocalId when reporting conditions.";
\r
971 enum VIRTUAL_NETWORK_CONSTRAINT {
\r
972 description "VirtualNetworkConstraint.
\r
973 Local class. For streaming this requires parentAddress (when reporting the entity alone) or a combination of measuredEntityUuid and measuredEntityLocalId when reporting conditions.";
\r
975 enum VIRTUAL_NETWORK_SERVICE_END_POINT {
\r
976 description "VirtualNetworkServiceEndPoint.
\r
977 Local class. For streaming this requires parentAddress (when reporting the entity alone) or a combination of measuredEntityUuid and measuredEntityLocalId when reporting conditions.";
\r
980 description "Empty structure.";
\r
983 description "The list of TAPI Global Object Class types for which a record can be streamed.";
\r
985 typedef stream-state {
\r
989 description "The state of the available stream.";
\r
991 grouping approx-date-and-time {
\r
992 leaf primary-time-stamp {
\r
993 type tapi-common:date-and-time;
\r
995 description "Time of the event at the origin where known precisely.
\r
996 Where the event is known to be before particular time, this field records that time.
\r
997 Where the event is known to be after a particular time, this field records that time (this is an unusual case where there is no proposed before time).
\r
998 Where the event is known to have occurred in a time window, this field records the end time (the time before which the event must have occurred).";
\r
1000 leaf start-time-stamp {
\r
1001 type tapi-common:date-and-time;
\r
1003 description "The time after which the event is known to have occurred when the event is known to have occurred between two times.
\r
1004 The primaryTimeStamp provides the end time.";
\r
1009 description "Indicates the knowledge of the time of occurrence of the event.";
\r
1011 leaf source-precision {
\r
1012 type source-precision;
\r
1014 description "Indicates how well the source time is synchronized with network time.";
\r
1016 description "Allows for recording of an aspect of imprecise time.";
\r
1018 typedef record-type {
\r
1019 type identityref {
\r
1022 description "The type of the record.
\r
1023 Used to understand what log content will be present and how to interpret it.
\r
1024 For some record types there is special encoding.
\r
1025 A ACTIVE alarm and an INTERMITTENT alarm are CREATE_UPDATE.
\r
1026 A CLEAR alarm is DELETE with an adjacent TOMBSTONE record.";
\r
1028 typedef source-precision {
\r
1029 type identityref {
\r
1030 base SOURCE_PRECISION;
\r
1032 description "Alternative statements about timing precision at the event source.";
\r
1035 type identityref {
\r
1038 description "The alternative time of occurrence statements.";
\r
1040 typedef condition-detector-type {
\r
1041 type identityref {
\r
1042 base CONDITION_DETECTOR_TYPE;
\r
1044 description "The type of condition detector.
\r
1045 The type relates to the characteristics of the detection and reporting strategies.
\r
1046 This drives the conditional augment.";
\r
1048 typedef event-source {
\r
1049 type enumeration {
\r
1050 enum RESOURCE_OPERATION {
\r
1051 description "The event is from the operation of the network resources.
\r
1052 The event source has a relatively fast time characteristic.";
\r
1054 enum MANAGEMENT_OPERATION {
\r
1055 description "Event is from a Management operation (slow control).
\r
1056 The event source has a relatively slow time characteristic.";
\r
1059 description "The origin of the event is not known.";
\r
1062 description "Source of the event.
\r
1063 Use to give some idea of the time characteristics of the event source.";
\r
1065 typedef perceived-severity {
\r
1066 type enumeration {
\r
1068 description "The highest severity of ACTIVE/INTERMITTENT alarm.";
\r
1071 description "The middle severity of ACTIVE/INTERMITTENT alarm.";
\r
1074 description "The lowest severity of ACTIVE/INTERMITTENT alarm.";
\r
1077 description "An extremely low importance ACTIVE/INTERMITTENT alarm (lower than MINOR).";
\r
1080 description "The severity of a CLEAR where no other severity information is available.";
\r
1083 description "The values for importance of an ACTIVE, INTERMITTENT or CLEAR alarm.";
\r
1085 typedef service-affect {
\r
1086 type enumeration {
\r
1087 enum SERVICE_AFFECTING {
\r
1088 description "The condition is believed to impact service.";
\r
1090 enum NOT_SERVICE_AFFECTING {
\r
1091 description "The condition is believed to not impact service.";
\r
1094 description "The service impact of the condition is not known.";
\r
1097 description "Indicates whether the device considers the condition to be impacting service.
\r
1098 Note that the detected condition along with knowledge of the topology and protection provide a more suitable approach.";
\r
1101 /**************************
\r
1102 * package object-classes
\r
1103 **************************/
\r
1104 grouping compacted-log-details {
\r
1105 leaf tombstone-retention {
\r
1108 description "Time in minutes.
\r
1109 The time period for which a Tombstone record will be held in the log from when it was logged.
\r
1110 This provides an adjustment to the essential Compaction strategy such that after the tombstoneRetention period there will be no records about a particular thing that existed but no longer exists.
\r
1111 Tombstone retention overrides recordRetention for Tombstones.
\r
1112 Key word 'FOREVER' means that Tombstone records will never be removed from the log.
\r
1113 Can be adjusted by an administrator (via a separate view) through the life of the stream.";
\r
1115 leaf compaction-delay {
\r
1118 description "Time in minutes.
\r
1119 The delay between logging the record and making the record available for compaction.
\r
1120 This provides an adjustment to the essential Compaction strategy such that there may be several distinct records for the same thing in the where those records are not older than the Compaction Delay.
\r
1121 Can be adjusted by an administrator (via a separate view) through the life of the stream.";
\r
1123 description "Details relevant for a CompactedLog.
\r
1124 The essential Compacted Log strategy is to remove historic records about a particular thing such that only the latest record about each thing exists in the log.
\r
1125 The essential strategy is refined by the parameters of this structure.";
\r
1127 grouping alarm-condition-detector-detail {
\r
1128 leaf alarm-detector-state {
\r
1129 type alarm-detector-state;
\r
1131 description "The state of the detector.
\r
1132 The detector state accounts for the time characteristics of the detected condition.";
\r
1134 container legacy-properties {
\r
1136 uses legacy-properties;
\r
1137 description "Alarm systems of the 20th century were based primarily on local lamps (initially filament bulbs) and bells.
\r
1138 Lamps can only be on or off, and bells sounding or not sounding, so alarms were Boolean in nature.
\r
1139 Where a detector was essentially multi-state it was converted into multiple Boolean statements.
\r
1140 The management of the equipments was essentially human only and local only (there were rarely remote systems).
\r
1141 The device with the problem was the only possible indicator of importance and it had only three distinct bulbs to illuminate (filament bulbs tend to fail requiring costly replacement).
\r
1142 The devices were relatively simple in function and analysis of the detectors was crude.
\r
1143 There was only the device to indicate severity
\r
1144 The device also could provide the best view as to whether a service was impacted, although clearly it had almost no knowledge.
\r
1145 In a modern solution with well-connected remote systems that increasingly analyze problems and where there is increasingly 'lights out' building operation, the device's guess at severity etc. is irrelevant.
\r
1146 In addition, with sophisticated resilience mechanisms, the device cannot make any relevant statement on whether the customer service has been impacted.
\r
1147 Likewise, in a world where there were no remote systems and local management was the only practice, alarms had to be locally 'acknowledged'.
\r
1148 Where there are remote systems, per alarm acknowledge is burdensome.
\r
1149 However, many solutions and operational practices continue to use the historic schemes.
\r
1150 On that basis, the schemes are supported but relegated to optional.";
\r
1152 description "A record of the state of a detector where that detector has two underling states that are of asymmetric importance.";
\r
1154 grouping condition-detector {
\r
1155 leaf condition-native-name {
\r
1158 description "The name used for the Condition by the source of the information.";
\r
1160 leaf measured-entity-uuid {
\r
1161 type tapi-common:uuid;
\r
1163 description "The uuid of the TAPI entity that represents the entity measured at source.
\r
1164 If the TAPI entity cannot be identified as it cannot be mapped, then this property can be omitted.
\r
1165 If the TAPI entity is a local class, then this is the UUID of the GlobalClass parent of the entity of which this is part.";
\r
1167 leaf measured-entity-native-id {
\r
1170 description "The identifier (invariant over the life) of the instance of the measured entity at the source.";
\r
1172 leaf condition-normalized-name {
\r
1175 description "It is often the case that there is a Condition Name that is commonly used or even standardized that has not been used by the source of the condition.
\r
1176 If this is the case, then that common/standard name is provided in via this property.";
\r
1178 leaf measured-entity-class {
\r
1179 type object-class-identifier;
\r
1181 description "The TAPI class of the measured entity.
\r
1182 If the class cannot be identified as it cannot be mapped, then this property can be omitted.";
\r
1184 leaf detector-uuid {
\r
1185 type tapi-common:uuid;
\r
1187 description "The uuid of the TAPI entity that represents the detector.
\r
1188 If the TAPI entity cannot be identified as it cannot be mapped, then this property can be omitted.
\r
1189 Where the detector is not modelled independently, but instead is a part of the measured entity such that it is identified by a 'local id' built from the UUID of the measured entity and the condition name, then this property may be omitted.";
\r
1191 leaf detector-native-id {
\r
1194 description "The identifier (invariant over the life) of the instance of the detector at the source (e.g. a device).
\r
1195 The string reported in this field must include the:
\r
1196 - device identifier
\r
1197 - one or more resource identifiers including that of the measured entity
\r
1198 It need not include the condition name.
\r
1201 leaf condition-detector-type {
\r
1202 type condition-detector-type;
\r
1204 description "Identifies the type of detector.
\r
1205 This drives the conditional augmentation.
\r
1206 Some types of detector may not need specific augmentation.
\r
1209 leaf-list measured-entity-local-id {
\r
1212 description "Where the measured entity is a local class and hence does not have a UUID the local ID is provided in conjunction with the parents ID.
\r
1213 The parent may also be a local class in which case its ID is a a local ID along with its parent ID.
\r
1214 There will be a parent which is a global class which then supplies a UUID.
\r
1215 The ID of the entity that is being measured is the combination of the UUID and the ordered list of local IDs.
\r
1216 The local ID may not be provided where:
\r
1217 - the report about a global class
\r
1218 - the report is relying on the detectorNativeId.";
\r
1220 description "ConditionDetector represents any monitoring component that assesses properties of something and determines from those properties what conditions are associated with the thing.
\r
1221 For example, a thing might be 'too hot' or might be 'unreliable'.
\r
1222 The monitor may a multi-state output.
\r
1223 The ConditionDetector lifecycle depends upon the lifecycle of the thing it is monitoring (this is a general OAM model consideration).
\r
1224 The entityKey in the AppendLogRecordHeader for a ConditionDetector record is the nativeDetector Id which may be derived from other ids (most robustly, nativeOwningEntityName (to which the detector is associated) + natveConditionName).";
\r
1226 grouping any-class {
\r
1227 description "In the final version all classes that can stream will be explicitly associated with the AppendLogRecordBody";
\r
1229 grouping stream-admin-context {
\r
1230 list stream-monitor {
\r
1233 uses stream-monitor;
\r
1234 description "The list of available stream monitors.";
\r
1236 uses tapi-common:global-class;
\r
1237 description "Context providing access to stream administration functionality.";
\r
1239 grouping stream-monitor {
\r
1240 leaf id-of-last-record-read-from-log {
\r
1243 description "The id/key of the last record read from the log by the client stream.
\r
1244 The analysis of this value needs to account for stream buffering in the comms layer.";
\r
1246 leaf id-of-last-record-written-to-log {
\r
1249 description "The id/key of the last record written to the log.
\r
1250 This is the same value for all clients of the stream.";
\r
1252 container available-stream {
\r
1253 uses available-stream-ref;
\r
1255 description "none";
\r
1260 description "The id of the connected client.";
\r
1262 leaf last-updated {
\r
1263 type tapi-common:date-and-time;
\r
1265 description "The date/time when the values provided were recorded.";
\r
1267 leaf client-address {
\r
1270 description "The address of the connected client that is being monitored.";
\r
1272 uses tapi-common:global-class;
\r
1273 description "Information on the monitoring of the use of a specific AvailableStream.";
\r
1275 grouping connection-protocol-details {
\r
1276 leaf-list allowed-connection-protocols {
\r
1279 description "Name of the allowed protocol.";
\r
1281 description "Details of the connection protocols available for the specific stream.";
\r
1283 grouping available-stream {
\r
1284 leaf connection-address {
\r
1287 description "Provides the address for the connection.
\r
1288 The format of the address and attachment mechanism will depend on the connection protocol defined in another attribute of this class.";
\r
1290 leaf stream-state {
\r
1291 type stream-state;
\r
1293 description "The state of the stream.";
\r
1295 container supported-stream-type {
\r
1296 uses supported-stream-type-ref;
\r
1298 description "Identifies the type of stream that is available for connection.";
\r
1303 description "The id of the stream.";
\r
1305 leaf connection-protocol {
\r
1308 description "Names the connection protocol for this particular available stream.
\r
1309 The connection protocol is chosen from the list of connection protocols identified in the referenced SupportedStreamType.";
\r
1311 uses tapi-common:global-class;
\r
1312 description "Details of stream a stream that can be connected to by a client application.";
\r
1314 grouping stream-context {
\r
1315 list available-stream {
\r
1318 uses available-stream;
\r
1319 description "none";
\r
1321 list supported-stream-type {
\r
1324 uses supported-stream-type;
\r
1325 description "none";
\r
1327 description "All streams relevant to the specific TapiContext.";
\r
1329 grouping supported-stream-type {
\r
1330 leaf stream-type-name {
\r
1333 description "Name of the stream type.";
\r
1335 leaf record-retention {
\r
1338 description "Time in minutes.
\r
1339 Statement of retention time and/or retention capacity in bytes.
\r
1340 Key word 'FOREVER' means that records will never be removed from the log.
\r
1341 May be overridden for particular cases of specific LogStorageStrategy (via augment).";
\r
1343 leaf segment-size {
\r
1346 description "Size of sub-structuring of the log.";
\r
1348 leaf-list record-content {
\r
1349 type object-class-identifier;
\r
1350 description "Identifies the classes that are supported through the stream.
\r
1351 The list may be a subset of the classes within the context.";
\r
1353 leaf log-storage-strategy {
\r
1354 type log-storage-strategy;
\r
1356 description "Indicates the storage characteristics of the log supporting the stream.";
\r
1358 leaf log-record-strategy {
\r
1359 type log-record-strategy;
\r
1361 description "Indicates the type of content of each log record.";
\r
1363 uses tapi-common:global-class;
\r
1364 description "Definition of a supported stream type.";
\r
1366 grouping log-record {
\r
1367 container log-record-header {
\r
1369 uses log-record-header;
\r
1370 description "The header of the log record providing general parameters of the record common to all records.";
\r
1372 container log-record-body {
\r
1374 uses log-record-body;
\r
1375 description "The body of the log record providing specific logged details.";
\r
1377 description "A specific atomic entry in a log.";
\r
1379 grouping log-record-body {
\r
1380 container event-time-stamp {
\r
1382 uses approx-date-and-time;
\r
1383 description "Time of the event at the origin of the event that triggered the generation of the record.
\r
1384 The structure allows for time uncertainty.";
\r
1386 leaf event-source {
\r
1387 type event-source;
\r
1389 description "Indicates whether the source is controlled (under management control) or potentially chaotic (under resource control).
\r
1390 The time characteristic of the source may be determined from the metadata describing the resource (e.g., a detector).
\r
1391 Where there is an alternative (and probably more detailed) source of information on time characteristic this attribute can be omitted.";
\r
1393 list additional-event-info {
\r
1396 uses tapi-common:name-and-value;
\r
1397 description "Addition information related to the event such as change reason where changeReason would be the name and the value text would provide information on the reason for change.";
\r
1399 leaf-list parent-address {
\r
1402 description "Where the entity is a local class this provides the ordered list of ids from the closest global class (a UUID cast as a string) to the direct parent (which may be the global class).
\r
1403 The field can include all entities back to the Context and hence can be used for global classes where the tree is being represented in full.
\r
1404 Gives the position of the entity in the address tree (usually containment) that is raising the event by providing the name/id values in the address of the parent.
\r
1405 Is the sequence of named levels in the tree up to but excluding the entity of the notification.
\r
1406 It includes the device id where relevant.";
\r
1408 leaf record-content {
\r
1409 type object-class-identifier;
\r
1411 description "The identifier of the object class in the record body detail.
\r
1412 This property is used to control the conditional augmentation of the body with detail.";
\r
1414 description "The specific details of the Record.";
\r
1416 grouping log-record-header {
\r
1417 leaf tapi-context {
\r
1418 type tapi-common:uuid;
\r
1420 description "The identifier of the context.";
\r
1425 description "A coded (and compact) form of the fullLogRecordOffsetId.
\r
1426 This property is used to request streaming from a particular point (e.g., the last correctly handled record).";
\r
1428 list full-log-record-offset-id {
\r
1432 uses tapi-common:name-and-value;
\r
1433 description "In a complex log solution there may be various parts to the log.
\r
1434 The record token is a compressed form of log record reference.
\r
1435 This property provides the verbose form
\r
1436 For example, it may include:
\r
1440 - partition offset
\r
1441 - sequence number (the offset is essentially the sequence number associated with the partition)";
\r
1443 leaf log-append-time-stamp {
\r
1444 type tapi-common:date-and-time;
\r
1446 description "The time when the record was appended to the log.";
\r
1451 description "The identifier of the entity that is used in a Compacted log as the compaction key.
\r
1452 The entityKey value, where appropriate, may be based upon the identifiers from the event source.
\r
1453 It can be built from some specific detail combination that meets the necessary uniqueness and durability requirements.
\r
1454 entityKey is the value used during compaction.
\r
1455 Ideally it is a UUID format, if this can be formed from the source identifier.";
\r
1457 leaf record-type {
\r
1460 description "The type of the record.
\r
1461 Can be used to understand which elements of the record will be present.";
\r
1463 leaf record-authenticity-token {
\r
1466 description "none";
\r
1468 description "The header of the log record providing general parameters of the record common to all records.";
\r
1470 notification stream-record {
\r
1471 uses stream-record;
\r
1472 description "none";
\r
1474 grouping stream-record {
\r
1478 description "Each stream record may include a number of log records.";
\r
1480 description "The stream content.";
\r
1483 /**************************
\r
1484 * package interfaces
\r
1485 **************************/
\r
1486 rpc connect-to-stream {
\r
1487 description "none";
\r
1489 leaf start-from-token {
\r
1491 description "none";
\r
1493 leaf connection-address {
\r
1495 description "none";
\r
1499 rpc get-available-stream-connection-details {
\r
1500 description "none";
\r
1502 list active-connections {
\r
1503 uses available-stream;
\r
1504 description "none";
\r
1508 rpc get-supported-stream-connection-types {
\r
1509 description "none";
\r
1511 list supported-stream-types {
\r
1512 uses supported-stream-type;
\r
1513 description "none";
\r