Add TAPI Topology simulated network function type.
[sim/o1-interface.git] / ntsimulator / deploy / smo-nts-ng-topology-server / yang / tapi-streaming@2020-06-16.yang
1 module tapi-streaming {\r
2     yang-version "1.1";\r
3     namespace "urn:onf:otcc:yang:tapi-streaming";\r
4     prefix tapi-streaming;\r
5     import tapi-common {\r
6         prefix tapi-common;\r
7     }\r
8     import tapi-connectivity {\r
9         prefix tapi-connectivity;\r
10     }\r
11     import tapi-equipment {\r
12         prefix tapi-equipment;\r
13     }\r
14     import tapi-oam {\r
15         prefix tapi-oam;\r
16     }\r
17     import tapi-path-computation {\r
18         prefix tapi-path-computation;\r
19     }\r
20     import tapi-topology {\r
21         prefix tapi-topology;\r
22     }\r
23     import tapi-virtual-network {\r
24         prefix tapi-virtual-network;\r
25     }\r
26     organization "ONF OTCC (Open Transport Configuration & Control) Project";\r
27     contact "\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
56     }\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
63     }\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
70     }\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
77     }\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
84     }\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
91     }\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
98     }\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
101     }\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
104     }\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
110         }\r
111         description "none";\r
112     }\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
118         }\r
119         description "none";\r
120     }\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
127         }\r
128         description "none";\r
129     }\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
136         }\r
137         description "none";\r
138     }\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
143             uses any-class;\r
144             description "none";\r
145         }\r
146         description "none";\r
147     }\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
153         }\r
154         description "none";\r
155     }\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
161         }\r
162         description "none";\r
163     }\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
169         }\r
170         description "none";\r
171     }\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
178         }\r
179         description "none";\r
180     }\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
187         }\r
188         description "none";\r
189     }\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
196         }\r
197         description "none";\r
198     }\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
205         }\r
206         description "none";\r
207     }\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
214         }\r
215         description "none";\r
216     }\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
223         }\r
224         description "none";\r
225     }\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
232         }\r
233         description "none";\r
234     }\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
238         container route {\r
239             uses tapi-connectivity:route;\r
240             description "none";\r
241         }\r
242         description "none";\r
243     }\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
247         container switch {\r
248             uses tapi-connectivity:switch;\r
249             description "none";\r
250         }\r
251         description "none";\r
252     }\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
259         }\r
260         description "none";\r
261     }\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
268         }\r
269         description "none";\r
270     }\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
274         container holder {\r
275             uses tapi-equipment:holder;\r
276             description "none";\r
277         }\r
278         description "none";\r
279     }\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
286         }\r
287         description "none";\r
288     }\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
295         }\r
296         description "none";\r
297     }\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
301         container device {\r
302             uses tapi-equipment:device;\r
303             description "none";\r
304         }\r
305         description "none";\r
306     }\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
313         }\r
314         description "none";\r
315     }\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
319         container mep {\r
320             uses tapi-oam:mep;\r
321             description "none";\r
322         }\r
323         description "none";\r
324     }\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
331         }\r
332         description "none";\r
333     }\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
337         container meg {\r
338             uses tapi-oam:meg;\r
339             description "none";\r
340         }\r
341         description "none";\r
342     }\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
346         container mip {\r
347             uses tapi-oam:mip;\r
348             description "none";\r
349         }\r
350         description "none";\r
351     }\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
358         }\r
359         description "none";\r
360     }\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
367         }\r
368         description "none";\r
369     }\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
376         }\r
377         description "none";\r
378     }\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
385         }\r
386         description "none";\r
387     }\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
394         }\r
395         description "none";\r
396     }\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
403         }\r
404         description "none";\r
405     }\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
412         }\r
413         description "none";\r
414     }\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
418         container path {\r
419             uses tapi-path-computation:path;\r
420             description "none";\r
421         }\r
422         description "none";\r
423     }\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
430         }\r
431         description "none";\r
432     }\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
439         }\r
440         description "none";\r
441     }\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
448         }\r
449         description "none";\r
450     }\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
457         }\r
458         description "none";\r
459     }\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
463         container link {\r
464              uses tapi-topology:link;\r
465              description "none";\r
466         }\r
467         description "none";\r
468     }\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
472         container node {\r
473             uses tapi-topology:node;\r
474             description "none";\r
475         }\r
476         description "none";\r
477     }\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
484         }\r
485         description "none";\r
486     }\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
493         }\r
494         description "none";\r
495     }\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
499         container rule {\r
500             uses tapi-topology:rule;\r
501             description "none";\r
502         }\r
503         description "none";\r
504     }\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
511         }\r
512         description "none";\r
513     }\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
520         }\r
521         description "none";\r
522     }\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
529         }\r
530         description "none";\r
531     }\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
538         }\r
539         description "none";\r
540     }\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
547         }\r
548         description "none";\r
549     }\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
556         }\r
557         description "none";\r
558     }\r
559 \r
560    /**************************\r
561     * definitions of refrences\r
562     **************************/\r
563     grouping available-stream-ref {\r
564         leaf available-stream-uuid{\r
565             type leafref {\r
566                 path '/tapi-common:context/tapi-streaming:stream-context/tapi-streaming:available-stream/tapi-streaming:uuid';\r
567             }\r
568             description "none";\r
569         }\r
570         description "none";\r
571     }\r
572     grouping supported-stream-type-ref {\r
573         leaf supported-stream-type-uuid {\r
574             type leafref {\r
575                 path '/tapi-common:context/tapi-streaming:stream-context/tapi-streaming:supported-stream-type/tapi-streaming:uuid';\r
576             }\r
577             description "none";\r
578         }\r
579         description "none";\r
580     }\r
581 \r
582    /**************************\r
583     * package type-definitions\r
584     **************************/ \r
585     identity ALARM_DETECTOR_STATE {\r
586         description "none";\r
587     }\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
593     }\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
598     }\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
605     }\r
606     identity LOG_RECORD_STRATEGY {\r
607         description "none";\r
608     }\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
613     }\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
618     }\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
622     }\r
623     identity LOG_STORAGE_STRATEGY {\r
624         description "none";\r
625     }\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
629     }\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
634     }\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
639     }\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
643     }\r
644     identity STREAM_STATE {\r
645         description "none";\r
646     }\r
647     identity STREAM_STATE_ALIGNING {\r
648         base STREAM_STATE;\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
651     }\r
652     identity STREAM_STATE_ACTIVE {\r
653         base STREAM_STATE;\r
654         description "The stream is operating such that if a client connects records will be provided as per back pressure etc.";\r
655     }\r
656     identity STREAM_STATE_PAUSED {\r
657         base STREAM_STATE;\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
659     }\r
660     identity STREAM_STATE_TERMINATED {\r
661         base STREAM_STATE;\r
662         description "The stream is essentially no longer available. It will be removed from the AvailableStreams list shortly.";\r
663     }\r
664     identity RECORD_TYPE {\r
665         description "none";\r
666     }\r
667     identity RECORD_TYPE_CREATE_UPDATE {\r
668         base RECORD_TYPE;\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
671     }\r
672     identity RECORD_TYPE_DELETE {\r
673         base RECORD_TYPE;\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
678     }\r
679     identity RECORD_TYPE_TOMBSTONE {\r
680         base RECORD_TYPE;\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
683     }\r
684     identity SOURCE_PRECISION {\r
685         description "none";\r
686     }\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
691     }\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
696     }\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
701     }\r
702     identity SPREAD {\r
703         description "none";\r
704     }\r
705     identity SPREAD_AT {\r
706         base SPREAD;\r
707         description "The event occurred at a particular time.";\r
708     }\r
709     identity SPREAD_BEFORE {\r
710         base SPREAD;\r
711         description "The event occurred before a particular time.";\r
712     }\r
713     identity SPREAD_AFTER {\r
714         base SPREAD;\r
715         description "The event occurred after a particular time.";\r
716     }\r
717     identity SPREAD_BETWEEN {\r
718         base SPREAD;\r
719         description "The event occurred between two stated times.";\r
720     }\r
721     identity CONDITION_DETECTOR_TYPE {\r
722         description "none";\r
723     }\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
730     }\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
734     }\r
735     typedef alarm-detector-state {\r
736         type identityref {\r
737             base ALARM_DETECTOR_STATE;\r
738         }\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
742     }\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
749         }\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
754         }\r
755         leaf is-acknowledged {\r
756             type boolean;\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
760         }\r
761         leaf-list additional-alarm-info {\r
762             type string;\r
763             description "Often, alarms raised by devices have additional information. \r
764                 This property can be used to convey this.";\r
765         }\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
767     }\r
768     typedef log-record-strategy {\r
769         type identityref {\r
770             base LOG_RECORD_STRATEGY;\r
771         }\r
772         description "Defines the different approaches for logging information about an event covering the log trigger and the log content.";\r
773     }\r
774     typedef log-storage-strategy {\r
775         type identityref {\r
776             base LOG_STORAGE_STRATEGY;\r
777         }\r
778         description "Defines the storage (record retention) approach.";\r
779     }\r
780     typedef object-class-identifier {\r
781         type enumeration {\r
782             enum NODE {\r
783                 description "Node.\r
784                     A GlobalClass.";\r
785             }\r
786             enum CONNECTION {\r
787                 description "Connection.\r
788                     A GlobalClass.";\r
789             }\r
790             enum LINK {\r
791                 description "Link.\r
792                     A GlobalClass.";\r
793             }\r
794             enum CONNECTION_END_POINT {\r
795                 description "ConnectionEndPoint.\r
796                     A GlobalClass.";\r
797             }\r
798             enum CONNECTIVITY_SERVICE {\r
799                 description "ConnectivityService.\r
800                     A GlobalClass.";\r
801             }\r
802             enum INTER_RULE_GROUP {\r
803                 description "InterRuleGroup.\r
804                     A GlobalClass.";\r
805             }\r
806             enum MAINTENANCE_ENTITY {\r
807                 description "MaintenanceEntity.\r
808                     A GlobalClass.";\r
809             }\r
810             enum MAINTENANCE_ENTITY_GROUP {\r
811                 description "Meg.\r
812                     A GlobalClass.";\r
813             }\r
814             enum MEG_END_POINT {\r
815                 description "Mep.\r
816                     A LocalClass. \r
817                     For streaming this requires parentAddress (when reporting the entity alone) or a combination of measuredEntityUuid and measuredEntityLocalId when reporting conditions.";\r
818             }\r
819             enum MEG_INTERMEDIATE_POINT {\r
820                 description "Mip.\r
821                     A LocalClass. \r
822                     For streaming this requires parentAddress (when reporting the entity alone) or a combination of measuredEntityUuid and measuredEntityLocalId when reporting conditions. ";\r
823             }\r
824             enum NODE_EDGE_POINT {\r
825                 description "NodeEdgePoint.\r
826                     A GlobalClass.";\r
827             }\r
828             enum OAM_JOB {\r
829                 description "OamJob.\r
830                     A GlobalClass.";\r
831             }\r
832             enum PATH {\r
833                 description "Path.\r
834                     A GlobalClass.";\r
835             }\r
836             enum NODE_RULE_GROUP {\r
837                 description "NodeRuleGroup.\r
838                     A GlobalClass.";\r
839             }\r
840             enum PATH_COMPUTATION_SERVICE {\r
841                 description "PathComputationService.\r
842                     A GlobalClass.";\r
843             }\r
844             enum ROUTE {\r
845                 description "Route.\r
846                     A LocalClass. \r
847                     For streaming this requires parentAddress (when reporting the entity alone) or a combination of measuredEntityUuid and measuredEntityLocalId when reporting conditions";\r
848             }\r
849             enum RULE {\r
850                 description "Rule.\r
851                     A LocalClass. \r
852                     For streaming this requires parentAddress (when reporting the entity alone) or a combination of measuredEntityUuid and measuredEntityLocalId when reporting conditions";\r
853             }\r
854             enum SERVICE_INTERFACE_POINT {\r
855                 description "ServiceInterfacePoint.\r
856                     A GlobalClass.";\r
857             }\r
858             enum SWITCH {\r
859                 description "Switch.\r
860                     A LocalClass. \r
861                     For streaming this requires parentAddress (when reporting the entity alone) or a combination of measuredEntityUuid and measuredEntityLocalId when reporting conditions";\r
862             }\r
863             enum SWITCH_CONTROL {\r
864                 description "SwitchControl.\r
865                     A GlobalClass.";\r
866             }\r
867             enum TOPOLOGY {\r
868                 description "Topology.\r
869                     A GlobalClass.";\r
870             }\r
871             enum VIRTUAL_NETWORK_SERVICE {\r
872                 description "VirtualNetworkService.\r
873                     A GlobalClass.";\r
874             }\r
875             enum OAM_PROFILE {\r
876                 description "OamProfile.\r
877                     A GlobalClass.";\r
878             }\r
879             enum OAM_SERVICE {\r
880                 description "OamService.\r
881                     A GlobalClass.";\r
882             }\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
886             }\r
887             enum ACCESS_PORT {\r
888                 description "AccessPort.\r
889                     A GlobalClass.";\r
890             }\r
891             enum DEVICE {\r
892                 description "Device.\r
893                     A GlobalClass.";\r
894             }\r
895             enum PHYSICAL_SPAN {\r
896                 description "PhysicalSpan.\r
897                     A GlobalClass.";\r
898             }\r
899             enum EQUIPMENT {\r
900                 description "Equipment.\r
901                     A GlobalClass.";\r
902             }\r
903             enum HOLDER {\r
904                 description "Holder.\r
905                     A GlobalClass.";\r
906             }\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
910             }\r
911             enum AVAILABLE_STREAM {\r
912                 description "AvailableStream.\r
913                     A GlobalClass.";\r
914             }\r
915             enum STREAM_MONITOR {\r
916                 description "StreamMonitor.\r
917                     A GlobalClass.";\r
918             }\r
919             enum SUPPORTED_STREAM_TYPE {\r
920                 description "SupportedStream.\r
921                     A GlobalClass.";\r
922             }\r
923             enum NETWORK_TOPOLOGY_SERVICE {\r
924                 description "NetworkTopologyService.\r
925                     A GlobalClass.";\r
926             }\r
927             enum TAPI_CONTEXT {\r
928                 description "TapiContext.\r
929                     A GlobalClass.";\r
930             }\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
934             }\r
935             enum PM_BIN_DATA {\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
938             }\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
942             }\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
946             }\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
950             }\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
954             }\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
958             }\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
962             }\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
966             }\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
970             }\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
974             }\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
978             }\r
979             enum ANY_CLASS {\r
980                 description "Empty structure.";\r
981             }\r
982         }\r
983         description "The list of TAPI Global Object Class types for which a record can be streamed.";\r
984     }\r
985     typedef stream-state {\r
986         type identityref {\r
987             base STREAM_STATE;\r
988         }\r
989         description "The state of the available stream.";\r
990     }\r
991     grouping approx-date-and-time {\r
992         leaf primary-time-stamp {\r
993             type tapi-common:date-and-time;\r
994             config false;\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
999         }\r
1000         leaf start-time-stamp {\r
1001             type tapi-common:date-and-time;\r
1002             config false;\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
1005         }\r
1006         leaf spread {\r
1007             type spread;\r
1008             config false;\r
1009             description "Indicates the knowledge of the time of occurrence of the event.";\r
1010         }\r
1011         leaf source-precision {\r
1012             type source-precision;\r
1013             config false;\r
1014             description "Indicates how well the source time is synchronized with network time.";\r
1015         }\r
1016         description "Allows for recording of an aspect of imprecise time.";\r
1017     }\r
1018     typedef record-type {\r
1019         type identityref {\r
1020             base RECORD_TYPE;\r
1021         }\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
1027     }\r
1028     typedef source-precision {\r
1029         type identityref {\r
1030             base SOURCE_PRECISION;\r
1031         }\r
1032         description "Alternative statements about timing precision at the event source.";\r
1033     }\r
1034     typedef spread {\r
1035         type identityref {\r
1036             base SPREAD;\r
1037         }\r
1038         description "The alternative time of occurrence statements.";\r
1039     }\r
1040     typedef condition-detector-type {\r
1041         type identityref {\r
1042             base CONDITION_DETECTOR_TYPE;\r
1043         }\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
1047     }\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
1053             }\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
1057             }\r
1058             enum UNKNOWN {\r
1059                 description "The origin of the event is not known.";\r
1060             }\r
1061         }\r
1062         description "Source of the event.\r
1063             Use to give some idea of the time characteristics of the event source.";\r
1064     }\r
1065     typedef perceived-severity {\r
1066         type enumeration {\r
1067             enum CRITICAL {\r
1068                 description "The highest severity of ACTIVE/INTERMITTENT alarm.";\r
1069             }\r
1070             enum MAJOR {\r
1071                 description "The middle severity of ACTIVE/INTERMITTENT alarm.";\r
1072             }\r
1073             enum MINOR {\r
1074                 description "The lowest severity of ACTIVE/INTERMITTENT alarm.";\r
1075             }\r
1076             enum WARNING {\r
1077                 description "An extremely low importance ACTIVE/INTERMITTENT alarm (lower than MINOR).";\r
1078             }\r
1079             enum CLEARED {\r
1080                 description "The severity of a CLEAR where no other severity information is available.";\r
1081             }\r
1082         }\r
1083         description "The values for importance of an ACTIVE, INTERMITTENT or CLEAR alarm.";\r
1084     }\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
1089             }\r
1090             enum NOT_SERVICE_AFFECTING {\r
1091                 description "The condition is believed to not impact service.";\r
1092             }\r
1093             enum UNKNOWN {\r
1094                 description "The service impact of the condition is not known.";\r
1095             }\r
1096         }\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
1099     }\r
1100 \r
1101     /**************************\r
1102     * package object-classes\r
1103     **************************/ \r
1104     grouping compacted-log-details {\r
1105         leaf tombstone-retention {\r
1106             type string;\r
1107             config false;\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
1114         }\r
1115         leaf compaction-delay {\r
1116             type string;\r
1117             config false;\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
1122         }\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
1126     }\r
1127     grouping alarm-condition-detector-detail {\r
1128         leaf alarm-detector-state {\r
1129             type alarm-detector-state;\r
1130             config false;\r
1131             description "The state of the detector.\r
1132                 The detector state accounts for the time characteristics of the detected condition.";\r
1133         }\r
1134         container legacy-properties {\r
1135             config false;\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
1151         }\r
1152         description "A record of the state of a detector where that detector has two underling states that are of asymmetric importance.";\r
1153     }\r
1154     grouping condition-detector {\r
1155         leaf condition-native-name {\r
1156             type string;\r
1157             config false;\r
1158             description "The name used for the Condition by the source of the information.";\r
1159         }\r
1160         leaf measured-entity-uuid {\r
1161             type tapi-common:uuid;\r
1162             config false;\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
1166         }\r
1167         leaf measured-entity-native-id {\r
1168             type string;\r
1169             config false;\r
1170             description "The identifier (invariant over the life) of the instance of the measured entity at the source.";\r
1171         }\r
1172         leaf condition-normalized-name {\r
1173             type string;\r
1174             config false;\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
1177         }\r
1178         leaf measured-entity-class {\r
1179             type object-class-identifier;\r
1180             config false;\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
1183         }\r
1184         leaf detector-uuid {\r
1185             type tapi-common:uuid;\r
1186             config false;\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
1190         }\r
1191         leaf detector-native-id {\r
1192             type string;\r
1193             config false;\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
1199                 ";\r
1200         }\r
1201         leaf condition-detector-type {\r
1202             type condition-detector-type;\r
1203             config false;\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
1207                 ";\r
1208         }\r
1209         leaf-list measured-entity-local-id {\r
1210             type string;\r
1211             config false;\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
1219         }\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
1225     }\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
1228     }\r
1229     grouping stream-admin-context {\r
1230         list stream-monitor {\r
1231             key 'uuid';\r
1232             config false;\r
1233             uses stream-monitor;\r
1234             description "The list of available stream monitors.";\r
1235         }\r
1236         uses tapi-common:global-class;\r
1237         description "Context providing access to stream administration functionality.";\r
1238     }\r
1239     grouping stream-monitor {\r
1240         leaf id-of-last-record-read-from-log {\r
1241             type string;\r
1242             config false;\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
1245         }\r
1246         leaf id-of-last-record-written-to-log {\r
1247             type string;\r
1248             config false;\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
1251         }\r
1252         container available-stream {\r
1253             uses available-stream-ref;\r
1254             config false;\r
1255             description "none";\r
1256         }\r
1257         leaf client-id {\r
1258             type string;\r
1259             config false;\r
1260             description "The id of the connected client.";\r
1261         }\r
1262         leaf last-updated {\r
1263             type tapi-common:date-and-time;\r
1264             config false;\r
1265             description "The date/time when the values provided were recorded.";\r
1266         }\r
1267         leaf client-address {\r
1268             type string;\r
1269             config false;\r
1270             description "The address of the connected client that is being monitored.";\r
1271         }\r
1272         uses tapi-common:global-class;\r
1273         description "Information on the monitoring of the use of a specific AvailableStream.";\r
1274     }\r
1275     grouping connection-protocol-details {\r
1276         leaf-list allowed-connection-protocols {\r
1277             type string;\r
1278             config false;\r
1279             description "Name of the allowed protocol.";\r
1280         }\r
1281         description "Details of the connection protocols available for the specific stream.";\r
1282     }\r
1283     grouping available-stream {\r
1284         leaf connection-address {\r
1285             type string;\r
1286             config false;\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
1289         }\r
1290         leaf stream-state {\r
1291             type stream-state;\r
1292             config false;\r
1293             description "The state of the stream.";\r
1294         }\r
1295         container supported-stream-type {\r
1296             uses supported-stream-type-ref;\r
1297             config false;\r
1298             description "Identifies the type of stream that is available for connection.";\r
1299         }\r
1300         leaf stream-id {\r
1301             type string;\r
1302             config false;\r
1303             description "The id of the stream.";\r
1304         }\r
1305         leaf connection-protocol {\r
1306             type string;\r
1307             config false;\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
1310         }\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
1313     }\r
1314     grouping stream-context {\r
1315         list available-stream {\r
1316             key 'uuid';\r
1317             config false;\r
1318             uses available-stream;\r
1319             description "none";\r
1320         }\r
1321         list supported-stream-type {\r
1322             key 'uuid';\r
1323             config false;\r
1324             uses supported-stream-type;\r
1325             description "none";\r
1326         }\r
1327         description "All streams relevant to the specific TapiContext.";\r
1328     }\r
1329     grouping supported-stream-type {\r
1330         leaf stream-type-name {\r
1331             type string;\r
1332             config false;\r
1333             description "Name of the stream type.";\r
1334         }\r
1335         leaf record-retention {\r
1336             type string;\r
1337             config false;\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
1342         }\r
1343         leaf segment-size {\r
1344             type string;\r
1345             config false;\r
1346             description "Size of sub-structuring of the log.";\r
1347         }\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
1352         }\r
1353         leaf log-storage-strategy {\r
1354             type log-storage-strategy;\r
1355             config false;\r
1356             description "Indicates the storage characteristics of the log supporting the stream.";\r
1357         }\r
1358         leaf log-record-strategy {\r
1359             type log-record-strategy;\r
1360             config false;\r
1361             description "Indicates the type of content of each log record.";\r
1362         }\r
1363         uses tapi-common:global-class;\r
1364         description "Definition of a supported stream type.";\r
1365     }\r
1366     grouping log-record {\r
1367         container log-record-header {\r
1368             config false;\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
1371         }\r
1372         container log-record-body {\r
1373             config false;\r
1374             uses log-record-body;\r
1375             description "The body of the log record providing specific logged details.";\r
1376         }\r
1377         description "A specific atomic entry in a log.";\r
1378     }\r
1379     grouping log-record-body {\r
1380         container event-time-stamp {\r
1381             config false;\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
1385         }\r
1386         leaf event-source {\r
1387             type event-source;\r
1388             config false;\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
1392         }\r
1393         list additional-event-info {\r
1394             key 'value-name';\r
1395             config false;\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
1398         }\r
1399         leaf-list parent-address {\r
1400             type string;\r
1401             config false;\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
1407         }\r
1408         leaf record-content {\r
1409             type object-class-identifier;\r
1410             config false;\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
1413         }\r
1414         description "The specific details of the Record.";\r
1415     }\r
1416     grouping log-record-header {\r
1417         leaf tapi-context {\r
1418             type tapi-common:uuid;\r
1419             config false;\r
1420             description "The identifier of the context.";\r
1421         }\r
1422         leaf token {\r
1423             type string;\r
1424             config false;\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
1427         }\r
1428         list full-log-record-offset-id {\r
1429             key 'value-name';\r
1430             config false;\r
1431             min-elements 1;\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
1437                 - stream id\r
1438                 - topic\r
1439                 - partition\r
1440                 - partition offset\r
1441                 - sequence number (the offset is essentially the sequence number associated with the partition)";\r
1442         }\r
1443         leaf log-append-time-stamp {\r
1444             type tapi-common:date-and-time;\r
1445             config false;\r
1446             description "The time when the record was appended to the log.";\r
1447         }\r
1448         leaf entity-key {\r
1449             type string;\r
1450             config false;\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
1456         }\r
1457         leaf record-type {\r
1458             type record-type;\r
1459             config false;\r
1460             description "The type of the record.\r
1461                 Can be used to understand which elements of the record will be present.";\r
1462         }\r
1463         leaf record-authenticity-token {\r
1464             type string;\r
1465             config false;\r
1466             description "none";\r
1467         }\r
1468         description "The header of the log record providing general parameters of the record common to all records.";\r
1469     }\r
1470     notification stream-record {\r
1471         uses stream-record;\r
1472         description "none";\r
1473     }\r
1474     grouping stream-record {\r
1475         list log-record {\r
1476             config false;\r
1477             uses log-record;\r
1478             description "Each stream record may include a number of log records.";\r
1479         }\r
1480         description "The stream content.";\r
1481     }\r
1482 \r
1483     /**************************\r
1484     * package interfaces\r
1485     **************************/ \r
1486     rpc connect-to-stream {\r
1487         description "none";\r
1488         input {\r
1489             leaf start-from-token {\r
1490                 type string;\r
1491                 description "none";\r
1492             }\r
1493             leaf connection-address {\r
1494                 type string;\r
1495                 description "none";\r
1496             }\r
1497         }\r
1498     }\r
1499     rpc get-available-stream-connection-details {\r
1500         description "none";\r
1501         output {\r
1502             list active-connections {\r
1503                 uses available-stream;\r
1504                 description "none";\r
1505             }\r
1506         }\r
1507     }\r
1508     rpc get-supported-stream-connection-types {\r
1509         description "none";\r
1510         output {\r
1511             list supported-stream-types {\r
1512                 uses supported-stream-type;\r
1513                 description "none";\r
1514             }\r
1515         }\r
1516     }\r
1517 \r
1518 }\r