BUG-5280: log a message when tell-based protocol is active
[controller.git] / opendaylight / md-sal / sal-cluster-admin-api / src / main / yang / cluster-admin.yang
1 module cluster-admin {
2     yang-version 1;
3     namespace "urn:opendaylight:params:xml:ns:yang:controller:md:sal:cluster:admin";
4     prefix "cluster-admin";
5
6     description
7         "This module contains YANG RPC definitions for administering a cluster.";
8
9     revision "2015-10-13" {
10         description "Initial revision.";
11     }
12
13     typedef data-store-type {
14         type enumeration {
15             enum config {
16                 value 1;
17             }
18             enum operational {
19                 value 2;
20             }
21         }
22     }
23
24     grouping shard-operation-result {
25         leaf shard-name {
26             type string;
27         }
28
29         leaf data-store-type {
30             type data-store-type;
31         }
32
33         leaf succeeded {
34             type boolean;
35         }
36
37         leaf error-message {
38             type string;
39         }
40     }
41
42     grouping shard-result-output {
43         list shard-result {
44             key "shard-name data-store-type";
45             uses shard-operation-result;
46
47             description "The list of results, one per shard";
48         }
49     }
50
51     grouping member-voting-states-input {
52         list member-voting-state {
53             leaf member-name {
54                 type string;
55             }
56
57             leaf voting {
58                 type boolean;
59             }
60
61             description "The list of member voting states";
62         }
63     }
64
65     rpc add-shard-replica {
66         input {
67             leaf shard-name {
68                 mandatory true;
69                 type string;
70                 description "The name of the shard for which to create a replica.";
71             }
72
73             leaf data-store-type {
74                 mandatory true;
75                 type data-store-type;
76                 description "The type of the data store to which the replica belongs";
77             }
78         }
79
80         description "Adds a replica of a shard to this node and joins it to an existing cluster. The shard must
81             already have a module configuration defined for it and there must already be a shard existing on
82             another node with a leader. This RPC first contacts peer member seed nodes searching for a shard.
83             When found, an AddServer message is sent to the shard leader and applied as described in the Raft
84             paper.";
85     }
86
87     rpc remove-shard-replica {
88         input {
89             leaf shard-name {
90                 mandatory true;
91                 type string;
92                 description "The name of the shard for which to remove the replica.";
93             }
94
95             leaf member-name {
96                 mandatory true;
97                 type string;
98                 description "The cluster member from which the shard replica should be removed";
99             }
100
101             leaf data-store-type {
102                 mandatory true;
103                 type data-store-type;
104                 description "The type of the data store to which the replica belongs";
105             }
106         }
107
108         description "Removes an existing replica of a shard from this node via the RemoveServer mechanism as
109             described in the Raft paper.";
110     }
111
112     rpc add-replicas-for-all-shards {
113         output {
114             uses shard-result-output;
115         }
116
117         description "Adds replicas on this node for all currently defined shards. This is equivalent to issuing
118             an add-shard-replica RPC for all shards.";
119     }
120
121     rpc remove-all-shard-replicas {
122         input {
123             leaf member-name {
124                 mandatory true;
125                 type string;
126                 description "The cluster member from which the shard replicas should be removed";
127             }
128         }
129
130         output {
131             uses shard-result-output;
132         }
133
134         description "Removes replicas for all shards on this node. This is equivalent to issuing
135             a remove-shard-replica for all shards and essentially removes this node from a cluster.";
136     }
137
138     rpc change-member-voting-states-for-shard {
139         input {
140             leaf shard-name {
141                 mandatory true;
142                 type string;
143                 description "The name of the shard for which to change voting state.";
144             }
145
146             leaf data-store-type {
147                 mandatory true;
148                 type data-store-type;
149                 description "The type of the data store to which the shard belongs";
150             }
151
152             uses member-voting-states-input;
153         }
154
155         description "Changes the voting states, either voting or non-voting, of cluster members for a shard.
156             Non-voting members will no longer participate in leader elections and consensus but will be
157             replicated. This is useful for having a set of members serve as a backup cluster in case the
158             primary voting cluster suffers catastrophic failure. This RPC can be issued to any cluster member
159             and will be forwarded to the leader.";
160     }
161
162     rpc change-member-voting-states-for-all-shards {
163         input {
164             uses member-voting-states-input;
165         }
166
167         output {
168             uses shard-result-output;
169         }
170
171         description "Changes the voting states, either voting or non-voting, of cluster members for all shards.
172             Non-voting members will no longer participate in leader elections and consensus but will be
173             replicated. This is useful for having a set of members serve as a backup cluster in case the
174             primary voting cluster suffers catastrophic failure. This RPC can be issued to any cluster member
175             and will be forwarded to the leader.";
176     }
177
178     rpc flip-member-voting-states-for-all-shards {
179         output {
180             uses shard-result-output;
181         }
182
183         description "Flips the voting states of all cluster members for all shards, such that if a member
184             was voting it becomes non-voting and vice versa.";
185     }
186
187     rpc backup-datastore {
188         input {
189             leaf file-path {
190               type string;
191               description "The path and name of the file in which to store the backup.";
192             }
193         }
194
195         description "Creates a backup file of the datastore state";
196     }
197 }