summaryrefslogtreecommitdiffstats
path: root/interface-role/api/src/main/yang/interface-role@2017-06-15.yang
blob: d3cb3b20b9396ec6ef3b2b86de67a5f757d00cec (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
module interface-role {

  yang-version 1;
  namespace "http://fd.io/hc2vpp/yang/interface-role";
  prefix "if-role";

  import ietf-interfaces {
    prefix "if";
  }

  import yang-ext {
    prefix "ext";
  }

  organization
    "FD.io - The Fast Data Project";

  contact
    "Hc2vpp Wiki <https://wiki.fd.io/view/Hc2vpp>
     Mailing List <hc2vpp@lists.fd.io>";

  description
    "This module contains a collection of YANG definitions for
     assigning roles to VPP interfaces.
     Interface roles provide additional metadata visible in config DS,
     but not translated to VPP API calls.

     Copyright (c) 2017 Cisco and/or its affiliates.

     Licensed under the Apache License, Version 2.0 (the 'License');
     you may not use this file except in compliance with the License.
     You may obtain a copy of the License at:

     http://www.apache.org/licenses/LICENSE-2.0

     Unless required by applicable law or agreed to in writing, software
     distributed under the License is distributed on an 'AS IS' BASIS,
     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     See the License for the specific language governing permissions and
     limitations under the License.";

  revision "2017-06-15" {
    description "Basic specification of interface roles";
  }

  identity network-role-base {
    description "Base identity for network interface roles";
  }

  identity virtual-domain-interface {
    base network-role-base;
    description "Tenant network interface. Interface must be enabled and have ip assigned";
  }

  identity public-interface {
    base network-role-base;
    description "Public interface for external access. Interface must be enabled and have ip assigned";
  }

  typedef network-role {
    type identityref {
      base network-role-base;
    }
    description "Base type for network interface roles";
  }

  grouping interface-role-grouping {
    container roles {
      list role {
        key role-name;

        leaf role-name {
          type string;
          description "Unique name for role";
          mandatory true;
        }

        leaf role-type {
          type network-role;
          description "Specifies type of network role";
          mandatory true;
        }

        leaf description {
          type string;
          description "Any additional metadata for this assignment of network role";
        }
      }
    }
  }

  augment /if:interfaces/if:interface {
    ext:augment-identifier "interface-role-augmentation";

    uses interface-role-grouping;
  }
}