summaryrefslogtreecommitdiffstats
path: root/v3po/vpp-cfg-init/src/main/yang/vpp-cfg-init.yang
blob: 024c930b7dff8e2c8f1a453cf9a74c81d6546760 (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
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
module vpp-cfg-init {
    yang-version 1;
    namespace "urn:honeycomb:params:xml:ns:yang:vpp:data:init";
    prefix "init";

    import config { prefix config; revision-date 2013-04-05; }
    import opendaylight-md-sal-binding { prefix md-sal-binding; revision-date 2013-10-28;}
    import opendaylight-md-sal-dom {prefix dom;}
    import translate-api { prefix tapi; revision-date 2016-04-06; }
    import data-api { prefix dapi; revision-date 2016-04-11; }

    description
        "This module contains initializers for VPP config data tree";

    revision "2016-04-07" {
        description
            "Initial revision";
    }

    identity cfg-initializer {
        base "config:service-type";
        config:java-class io.fd.honeycomb.v3po.vpp.data.init.DataTreeInitializer;
    }

    // TODO move to v3po2vpp
    identity vpp-cfg-initializer {
        base config:module-type;
        config:provided-service cfg-initializer;
        config:java-name-prefix VppConfigurationInitializer;
    }

    augment "/config:modules/config:module/config:configuration" {
        case vpp-cfg-initializer {
            when "/config:modules/config:module/config:type = 'vpp-cfg-initializer'";

             container binding-data-broker {
                uses config:service-ref {
                    refine type {
                        mandatory true;
                        config:required-identity md-sal-binding:binding-async-data-broker;
                    }
                }
             }
        }
    }

    // TODO move to v3po2vpp
    identity interfaces-cfg-initializer {
        base config:module-type;
        config:provided-service cfg-initializer;
        config:java-name-prefix InterfacesConfigurationInitializer;
    }

    augment "/config:modules/config:module/config:configuration" {
        case interfaces-cfg-initializer {
            when "/config:modules/config:module/config:type = 'interfaces-cfg-initializer'";

             container binding-data-broker {
                uses config:service-ref {
                    refine type {
                        mandatory true;
                        config:required-identity md-sal-binding:binding-async-data-broker;
                    }
                }
             }
        }
    }

    identity cfg-initializer-registry {
        base config:module-type;
        config:provided-service cfg-initializer;
        config:java-name-prefix ConfigurationInitializerRegistry;
        description "Initializer registry, delegating initialization to a list of initializers";
    }

    augment "/config:modules/config:module/config:configuration" {
        case cfg-initializer-registry {
            when "/config:modules/config:module/config:type = 'cfg-initializer-registry'";

             list initializers {
                uses config:service-ref {
                    refine type {
                        mandatory true;
                        config:required-identity cfg-initializer;
                    }
                }
             }

             container persisted-context-initializer {
                uses config:service-ref {
                    refine type {
                        mandatory true;
                        config:required-identity cfg-initializer;
                    }
                }
             }

             container persisted-config-initializer {
                uses config:service-ref {
                    refine type {
                        mandatory true;
                        config:required-identity cfg-initializer;
                    }
                }
             }
        }
    }

    identity persisted-file-initializer {
        base config:module-type;
        config:provided-service cfg-initializer;
        description "Initializer restoring data from a persisted file";
    }

    typedef restoration-type {
        type enumeration {
             enum merge;
             enum put;
         }
    }

    augment "/config:modules/config:module/config:configuration" {
        case persisted-file-initializer {
            when "/config:modules/config:module/config:type = 'persisted-file-initializer'";

            container dom-data-broker {
                uses config:service-ref {
                    refine type {
                        mandatory true;
                        config:required-identity dom:dom-async-data-broker;
                    }
                }
            }

            container schema-service {
                uses config:service-ref {
                    refine type {
                        mandatory true;
                        config:required-identity dom:schema-service;
                    }
                }
            }

            leaf persist-file-path {
                type string;
            }

            leaf restoration-type {
                type restoration-type;
                default merge;
            }


            leaf datastore-type {
                type dapi:datatree-type;
            }
        }
    }

}