blob: cb21a6c3b8bc934fbd5fd1b468c2769faf5ae9ee [file] [log] [blame]
Scott Bakerc9d3d842021-09-17 11:32:53 -07001// SPDX-FileCopyrightText: 2021 Open Networking Foundation
2//
3// SPDX-License-Identifier: LicenseRef-ONF-Member-Only-1.0
4
5module onf-application {
6 namespace "http://opennetworking.org/enterprise/application";
7 prefix app;
8
9 import ietf-inet-types{ prefix ietf; }
10 import ietf-yang-types{ prefix yg; }
11 import onf-aether-types{ prefix at; }
12 import onf-enterprise{ prefix ent; }
Scott Bakercd276412021-10-13 14:31:24 -070013 import onf-traffic-class{ prefix tc; }
Scott Bakerc9d3d842021-09-17 11:32:53 -070014
15 organization "Open Networking Foundation.";
16 contact "Scott Baker";
Scott Bakerebb99ae2021-11-01 15:34:51 -070017 description
Scott Bakerc9d3d842021-09-17 11:32:53 -070018 "An Aether Application is an application that devices may
19 connect to. Includes a set of endpoints where services are
20 provided.";
21
22 revision "2021-09-10" {
23 description "Aether Application.";
24 reference "RFC 6087";
25 }
26
27 typedef application-id {
28 type yg:yang-identifier {
29 length 1..32;
30 }
31 }
32
33 container application {
34 description "The top level container";
35
36 list application {
37 key "id";
38 description
39 "List of applications";
40
41 leaf id {
42 type application-id;
43 description "ID for this application.";
44 }
45
46 leaf display-name {
47 type string {
48 length 1..80;
49 }
50 description "display name to use in GUI or CLI";
51 }
52
53 leaf description {
54 type at:description;
55 description "description of this application";
56 }
57
Scott Baker910f4062021-09-22 13:26:23 -070058 leaf address {
59 type ietf:host;
60 mandatory true;
61 description
62 "Address of this application. Either a hostname, an IP, or a subnet.";
63 }
64
Scott Bakerc9d3d842021-09-17 11:32:53 -070065 list endpoint {
Scott Bakerc4b3e272021-11-01 17:13:48 -070066 key "endpoint-id";
67 leaf endpoint-id {
Scott Bakerebb99ae2021-11-01 15:34:51 -070068 type yg:yang-identifier;
Scott Bakerc9d3d842021-09-17 11:32:53 -070069 description
Scott Bakerebb99ae2021-11-01 15:34:51 -070070 "Id of this endpoint";
Scott Bakerc9d3d842021-09-17 11:32:53 -070071 }
Scott Bakerc9d3d842021-09-17 11:32:53 -070072 leaf port-start {
73 type ietf:port-number;
74 mandatory true;
75 description
76 "First port in range";
77 }
78 leaf port-end {
79 type ietf:port-number;
80 description
81 "Last port in range";
82 }
83 leaf protocol {
84 type at:protocol;
85 description
Scott Baker910f4062021-09-22 13:26:23 -070086 "Protocol of this endpoint";
87 }
88 container mbr {
89 description "Maximum bitrate";
90 leaf uplink {
91 type at:bitrate;
Scott Baker3f1cb272021-10-26 14:28:05 -070092 units bps;
93 description "Per-Device per-Application MBR uplink data rate in bps";
Scott Baker910f4062021-09-22 13:26:23 -070094 }
95
96 leaf downlink {
97 type at:bitrate;
Scott Baker3f1cb272021-10-26 14:28:05 -070098 units bps;
99 description "Per-Device per application MBR downlink data rate in bps";
Scott Baker910f4062021-09-22 13:26:23 -0700100 }
101 }
Scott Bakercd276412021-10-13 14:31:24 -0700102 leaf traffic-class {
103 type leafref {
104 path "/tc:traffic-class/tc:traffic-class/tc:id";
105 }
106 description
107 "Link to traffic class";
108 }
Scott Bakerebb99ae2021-11-01 15:34:51 -0700109 leaf display-name {
110 type string {
111 length 1..80;
112 }
113 description "display name to use in GUI or CLI";
114 }
Scott Bakerc9d3d842021-09-17 11:32:53 -0700115 }
116
117 leaf enterprise {
118 type leafref {
119 path "/ent:enterprise/ent:enterprise/ent:id";
120 }
121 mandatory true;
122 description
123 "Link to enterprise that owns this Application. May be set to None if the application is global to all Enterprises.";
124 }
Scott Bakerc9d3d842021-09-17 11:32:53 -0700125 }
Scott Baker910f4062021-09-22 13:26:23 -0700126 }
Scott Bakerc9d3d842021-09-17 11:32:53 -0700127}