Add MdsalLowlevel.robot library
[integration/test.git] / csit / libraries / MdsalLowlevel.robot
1 *** Settings ***
2 Documentation     Keywords wrapping controller's odl-mdsal-lowlevel yang model rpcs.
3 ...
4 ...               This is just an initial skeleton implementation, calls are debugged. Multiple
5 ...               changes will follow as suites will be implemented.
6 ...               This suite should be preferably merged before any suite to avoid conflicting
7 ...               situations while suites will be implementing.
8 ...
9 ...               Copyright (c) 2017 Cisco Systems, Inc. and others. All rights reserved.
10 ...
11 ...               This program and the accompanying materials are made available under the
12 ...               terms of the Eclipse Public License v1.0 which accompanies this distribution,
13 ...               and is available at http://www.eclipse.org/legal/epl-v10.html
14 Resource          ${CURDIR}/ClusterManagement.robot
15 Resource          ${CURDIR}/TemplatedRequests.robot
16
17 *** Variables ***
18 ${RPC_DIR}        ${CURDIR}/../variables/mdsal/lowlevelrpc
19 ${ADD_SHARD_REPLICA_DIR}    ${RPC_DIR}/add_shard_replica
20 ${BECOME_MODULE_LEADER_DIR}    ${RPC_DIR}/become_module_leader
21 ${BECOME_PREFIX_LEADER_DIR}    ${RPC_DIR}/become_prefix_leader
22 ${DECONFIGURE_ID_INTS_SHARD_DIR}    ${RPC_DIR}/deconfigure_id_ints_shard
23 ${GET_CONSTANT_DIR}    ${RPC_DIR}/get_constant
24 ${GET_CONTEXTED_CONSTANT_DIR}    ${RPC_DIR}/get_contexted_constant
25 ${GET_SINGLETON_CONSTANT_DIR}    ${RPC_DIR}/get_singleton_constant
26 ${IS_CLIENT_ABORTED_DIR}    ${RPC_DIR}/is_client_aborted
27 ${PRODUCE_TRANSACTIONS_DIR}    ${RPC_DIR}/produce_transactions
28 ${PUBLISH_NOTIFICATIONS_DIR}    ${RPC_DIR}/publish_notifications
29 ${REGISTER_BOUND_CONSTANT_DIR}    ${RPC_DIR}/register_bound_constant
30 ${REGISTER_CONSTANT_DIR}    ${RPC_DIR}/register_constant
31 ${REGISTER_DEFAULT_CONSTANT_DIR}    ${RPC_DIR}/register_default_constant
32 ${REGISTER_FLAPPING_SINGLETON_DIR}    ${RPC_DIR}/register_flapping_singleton
33 ${REGISTER_SINGLETON_CONSTANT_DIR}    ${RPC_DIR}/register_singleton_constant
34 ${REMOVE_SHARD_REPLICA_DIR}    ${RPC_DIR}/remove_shard_replica
35 ${SUBSCRIBE_DDTL_DIR}    ${RPC_DIR}/subscribe_ddtl
36 ${SUBSCRIBE_DTCL_DIR}    ${RPC_DIR}/subscribe_dtcl
37 ${SUBSCRIBE_YNL_DIR}    ${RPC_DIR}/subscribe_ynl
38 ${UNREGISTER_BOUND_CONSTANT_DIR}    ${RPC_DIR}/unregister_bound_constant
39 ${UNREGISTER_CONSTANT_DIR}    ${RPC_DIR}/unregister_constant
40 ${UNREGISTER_DEFAULT_CONSTANT_DIR}    ${RPC_DIR}/unregister_default_constant
41 ${UNREGISTER_FLAPPING_SINGLETON_DIR}    ${RPC_DIR}/unregister_flapping_singleton
42 ${UNREGISTER_SINGLETON_CONSTANT_DIR}    ${RPC_DIR}/unregister_singleton_constant
43 ${UNSUBSCRIBE_DDTL_DIR}    ${RPC_DIR}/unsubscribe_ddtl
44 ${UNSUBSCRIBE_DTCL_DIR}    ${RPC_DIR}/unsubscribe_dtcl
45 ${UNSUBSCRIBE_YNL_DIR}    ${RPC_DIR}/unsubscribe_ynl
46 ${WRITE_TRANSACTIONS_DIR}    ${RPC_DIR}/write_transactions
47
48 *** Keywords ***
49 Get_Constant
50     [Arguments]    ${member_index}
51     [Documentation]    TODO: more desctiptive comment than: Invoke get-constant rpc.
52     ${session} =    ClusterManagement.Resolve_Http_Session_For_Member    member_index=${member_index}
53     ${text} =    TemplatedRequests.Post_As_Xml_Templated    ${GET_CONSTANT_DIR}    session=${session}
54     BuiltIn.Fail    TODO: to format output data
55     BuiltIn.Return_From_Keyword    ${formatted_output}
56
57 Get_Contexted_Constant
58     [Arguments]    ${member_index}    ${context}
59     [Documentation]    TODO: more desctiptive comment than: Invoke get-contexted-constant rpc.
60     ${session} =    ClusterManagement.Resolve_Http_Session_For_Member    member_index=${member_index}
61     &{mapping}    BuiltIn.Create_Dictionary    CONTEXT=${context}
62     ${test} =    TemplatedRequests.Post_As_Xml_Templated    ${GET_CONTEXTED_CONSTANT_DIR}    mapping=${mapping}    session=${session}
63     BuiltIn.Fail    TODO: to format output data or at least to check the format
64     BuiltIn.Return_From_Keyword    ${formatted_output}
65
66 Get_Singleton_Constant
67     [Arguments]    ${member_index}
68     [Documentation]    TODO: more desctiptive comment than: Invoke get-singleton-constant rpc.
69     ${session} =    ClusterManagement.Resolve_Http_Session_For_Member    member_index=${member_index}
70     ${uri} =    TemplatedRequests.Resolve_Text_From_Template_Folder    folder=${GET_SINGLETON_CONSTANT_DIR}    base_name=location    extension=uri
71     ${text} =    TemplatedRequests.Post_To_Uri    uri=${uri}    data=${EMPTY}    accept=${ACCEPT_JSON}    content_type=${HEADERS_YANG_JSON}    session=${session}
72     BuiltIn.Fail    TODO: to format output data
73     BuiltIn.Return_From_Keyword    ${formatted_output}
74
75 Register_Constant
76     [Arguments]    ${member_index}    ${constant}
77     [Documentation]    TODO: more desctiptive comment than: Invoke register-constant rpc.
78     ${session} =    ClusterManagement.Resolve_Http_Session_For_Member    member_index=${member_index}
79     &{mapping}    BuiltIn.Create_Dictionary    CONSTANT=${constant}
80     TemplatedRequests.Post_As_Xml_Templated    ${REGISTER_CONSTANT_DIR}    mapping=${mapping}    session=${session}
81
82 Unregister_Constant
83     [Arguments]    ${member_index}
84     [Documentation]    TODO: more desctiptive comment than: Invoke unregister-constant rpc.
85     ${session} =    ClusterManagement.Resolve_Http_Session_For_Member    member_index=${member_index}
86     ${uri} =    TemplatedRequests.Resolve_Text_From_Template_Folder    folder=${UNREGISTER_CONSTANT_DIR}    base_name=location    extension=uri
87     ${text} =    TemplatedRequests.Post_To_Uri    uri=${uri}    data=${EMPTY}    accept=${ACCEPT_JSON}    content_type=${HEADERS_YANG_JSON}    session=${session}
88
89 Register_Singleton_Constant
90     [Arguments]    ${member_index}    ${constant}
91     [Documentation]    TODO: more desctiptive comment than: Invoke register-singleton-constant rpc.
92     ${session} =    ClusterManagement.Resolve_Http_Session_For_Member    member_index=${member_index}
93     &{mapping}    BuiltIn.Create_Dictionary    CONSTANT=${constant}
94     TemplatedRequests.Post_As_Xml_Templated    ${REGISTER_SINGLETON_CONSTANT_DIR}    mapping=${mapping}    session=${session}
95
96 Unregister_Singleton_Constant
97     [Arguments]    ${member_index}
98     [Documentation]    TODO: more desctiptive comment than: Invoke unregister-singleton-constant rpc.
99     ${session} =    ClusterManagement.Resolve_Http_Session_For_Member    member_index=${member_index}
100     ${uri} =    TemplatedRequests.Resolve_Text_From_Template_Folder    folder=${UNREGISTER_SINGLETON_CONSTANT_DIR}    base_name=location    extension=uri
101     ${text} =    TemplatedRequests.Post_To_Uri    uri=${uri}    data=${EMPTY}    accept=${ACCEPT_JSON}    content_type=${HEADERS_YANG_JSON}    session=${session}
102
103 Register_Flapping_Singleton
104     [Arguments]    ${member_index}
105     [Documentation]    TODO: more desctiptive comment than: Invoke register-flapping-singleton rpc.
106     ${session} =    ClusterManagement.Resolve_Http_Session_For_Member    member_index=${member_index}
107     ${uri} =    TemplatedRequests.Resolve_Text_From_Template_Folder    folder=${REGISTER_FLAPPING_SINGLETON_DIR}    base_name=location    extension=uri
108     TemplatedRequests.Post_To_Uri    uri=${uri}    data=${EMPTY}    accept=${ACCEPT_JSON}    content_type=${HEADERS_YANG_JSON}    session=${session}
109
110 Unregister_Flapping_Singleton
111     [Arguments]    ${member_index}
112     [Documentation]    TODO: more desctiptive comment than: Invoke unregister-flapping-singleton rpc.
113     ${session} =    ClusterManagement.Resolve_Http_Session_For_Member    member_index=${member_index}
114     ${uri} =    TemplatedRequests.Resolve_Text_From_Template_Folder    folder=${UNREGISTER_FLAPPING_SINGLETON_DIR}    base_name=location    extension=uri
115     ${text} =    TemplatedRequests.Post_To_Uri    uri=${uri}    data=${EMPTY}    accept=${ACCEPT_JSON}    content_type=${HEADERS_YANG_JSON}    session=${session}
116
117 Write_Transactions
118     [Arguments]    ${member_index}    ${seconds}    ${trans_per_sec}    ${chained_trans}=${True}
119     [Documentation]    TODO: more desctiptive comment than: Invoke write-transactions rpc.
120     ${session} =    ClusterManagement.Resolve_Http_Session_For_Member    member_index=${member_index}
121     &{mapping}    BuiltIn.Create_Dictionary    SECONDS=${seconds}    TPS=${trans_per_sec}    CHAINED_TRANSACTIONS=${chained_trans}
122     TemplatedRequests.Post_As_Xml_Templated    ${WRITE_TRANSACTIONS_DIR}    mapping=${mapping}    session=${session}
123
124 Produce_Transactions
125     [Arguments]    ${member_index}    ${seconds}    ${trans_per_sec}    ${isolated_trans}=${True}
126     [Documentation]    TODO: more desctiptive comment than: Invoke produce-transactions rpc.
127     ${session} =    ClusterManagement.Resolve_Http_Session_For_Member    member_index=${member_index}
128     &{mapping}    BuiltIn.Create_Dictionary    SECONDS=${seconds}    TPS=${trans_per_sec}    ISOLATED_TRANSACTIONS=${chained_trans}
129     TemplatedRequests.Post_As_Xml_Templated    ${PRODUCE_TRANSACTIONS_DIR}    mapping=${mapping}    session=${session}
130
131 Become_Prefix_Leader
132     [Arguments]    ${member_index}    ${shard_name}
133     [Documentation]    TODO: more desctiptive comment than: Invoke become-prefix-leader rpc.
134     ${session} =    ClusterManagement.Resolve_Http_Session_For_Member    member_index=${member_index}
135     &{mapping}    BuiltIn.Create_Dictionary    SHARD_NAME=${shard_name}
136     ${text} =    TemplatedRequests.Post_As_Xml_Templated    ${BECOME_PREFIX_LEADER_DIR}    mapping=${mapping}    session=${session}
137
138 Become_Module_Leader
139     [Arguments]    ${member_index}    ${shard_name}
140     [Documentation]    TODO: more desctiptive comment than: Invoke become-module-leader rpc.
141     ${session} =    ClusterManagement.Resolve_Http_Session_For_Member    member_index=${member_index}
142     &{mapping}    BuiltIn.Create_Dictionary    SHARD_NAME=${shard_name}
143     ${text} =    TemplatedRequests.Post_As_Xml_Templated    ${BECOME_MODULE_LEADER_DIR}    mapping=${mapping}    session=${session}
144
145 Remove_Shard_Replica
146     [Arguments]    ${member_index}    ${shard_name}
147     [Documentation]    TODO: more desctiptive comment than: Invoke remove-shard-replica rpc.
148     ${session} =    ClusterManagement.Resolve_Http_Session_For_Member    member_index=${member_index}
149     &{mapping}    BuiltIn.Create_Dictionary    SHARD_NAME=${shard_name}
150     TemplatedRequests.Post_As_Xml_Templated    ${REMOVE_SHARD_REPLICA_DIR}    mapping=${mapping}    session=${session}
151
152 Add_Shard_Replica
153     [Arguments]    ${member_index}    ${shard_name}
154     [Documentation]    TODO: more desctiptive comment than: Invoke add-shard-replica rpc.
155     ${session} =    ClusterManagement.Resolve_Http_Session_For_Member    member_index=${member_index}
156     &{mapping}    BuiltIn.Create_Dictionary    SHARD_NAME=${shard_name}
157     TemplatedRequests.Post_As_Xml_Templated    ${ADD_SHARD_REPLICA_DIR}    mapping=${mapping}    session=${session}
158
159 Deconfigure_Id_Ints_Shard
160     [Arguments]    ${member_index}
161     [Documentation]    TODO: more desctiptive comment than: Invoke deconfigure-id-ints-shard rpc.
162     ${session} =    ClusterManagement.Resolve_Http_Session_For_Member    member_index=${member_index}
163     ${uri} =    TemplatedRequests.Resolve_Text_From_Template_Folder    folder=${DECONFIGURE_ID_INTS_SHARD_DIR}    base_name=location    extension=uri
164     TemplatedRequests.Post_To_Uri    uri=${uri}    data=${EMPTY}    accept=${ACCEPT_JSON}    content_type=${HEADERS_YANG_JSON}    session=${session}
165
166 Is_Client_Aborted
167     [Arguments]    ${member_index}
168     [Documentation]    TODO: more desctiptive comment than: Invoke is-client-aborted rpc.
169     ${session} =    ClusterManagement.Resolve_Http_Session_For_Member    member_index=${member_index}
170     ${uri} =    TemplatedRequests.Resolve_Text_From_Template_Folder    folder=${IS_CLIENT_ABORTED_SHARD_DIR}    base_name=location    extension=uri
171     ${text} =    TemplatedRequests.Post_To_Uri    uri=${uri}    data=${EMPTY}    accept=${ACCEPT_JSON}    content_type=${HEADERS_YANG_JSON}    session=${session}
172
173 Subscribe_Dtcl
174     [Arguments]    ${member_index}
175     [Documentation]    TODO: more desctiptive comment than: Invoke subscribe-dtcl rpc.
176     ${session} =    ClusterManagement.Resolve_Http_Session_For_Member    member_index=${member_index}
177     ${uri} =    TemplatedRequests.Resolve_Text_From_Template_Folder    folder=${SUBSCRIBE_DTCL_DIR}    base_name=location    extension=uri
178     TemplatedRequests.Post_To_Uri    uri=${uri}    data=${EMPTY}    accept=${ACCEPT_JSON}    content_type=${HEADERS_YANG_JSON}    session=${session}
179
180 Unsubscribe_Dtcl
181     [Arguments]    ${member_index}
182     [Documentation]    TODO: more desctiptive comment than: Invoke unsubscribe-dtcl rpc.
183     ${session} =    ClusterManagement.Resolve_Http_Session_For_Member    member_index=${member_index}
184     ${uri} =    TemplatedRequests.Resolve_Text_From_Template_Folder    folder=${UNSUBSCRIBE_DTCL_DIR}    base_name=location    extension=uri
185     ${text} =    TemplatedRequests.Post_To_Uri    uri=${uri}    data=${EMPTY}    accept=${ACCEPT_JSON}    content_type=${HEADERS_YANG_JSON}    session=${session}
186
187 Subscribe_Ddtl
188     [Arguments]    ${member_index}
189     [Documentation]    TODO: more desctiptive comment than: Invoke subscribe-ddtl rpc.
190     ${session} =    ClusterManagement.Resolve_Http_Session_For_Member    member_index=${member_index}
191     ${uri} =    TemplatedRequests.Resolve_Text_From_Template_Folder    folder=${SUBSCRIBE_DDTL_DIR}    base_name=location    extension=uri
192     TemplatedRequests.Post_To_Uri    uri=${uri}    data=${EMPTY}    accept=${ACCEPT_JSON}    content_type=${HEADERS_YANG_JSON}    session=${session}
193
194 Unsubscribe_Ddtl
195     [Arguments]    ${member_index}
196     [Documentation]    TODO: more desctiptive comment than: Invoke unsubscribe-ddtl rpc.
197     ${session} =    ClusterManagement.Resolve_Http_Session_For_Member    member_index=${member_index}
198     ${uri} =    TemplatedRequests.Resolve_Text_From_Template_Folder    folder=${UNSUBSCRIBE_DDTL_DIR}    base_name=location    extension=uri
199     ${text} =    TemplatedRequests.Post_To_Uri    uri=${uri}    data=${EMPTY}    accept=${ACCEPT_JSON}    content_type=${HEADERS_YANG_JSON}    session=${session}
200
201 Publish_Notifications
202     [Arguments]    ${member_index}    ${seconds}    ${notif_per_sec}
203     [Documentation]    TODO: more desctiptive comment than: Invoke publish-notifications rpc.
204     ${session} =    ClusterManagement.Resolve_Http_Session_For_Member    member_index=${member_index}
205     &{mapping}    BuiltIn.Create_Dictionary    SECONDS=${seconds}    NPS=${notif_per_sec}
206     TemplatedRequests.Post_As_Xml_Templated    ${PUBLISH_NOTIFICATIONS_DIR}    mapping=${mapping}    session=${session}
207
208 Subscribe_Ynl
209     [Arguments]    ${member_index}
210     [Documentation]    TODO: more desctiptive comment than: Invoke subscribe-ynl rpc.
211     ${session} =    ClusterManagement.Resolve_Http_Session_For_Member    member_index=${member_index}
212     &{mapping}    BuiltIn.Create_Dictionary
213     TemplatedRequests.Post_As_Xml_Templated    ${SUBSCRIBE_YNL_DIR}    mapping=${mapping}    session=${session}
214
215 Unsubscribe_Ynl
216     [Arguments]    ${member_index}
217     [Documentation]    TODO: more desctiptive comment than: Invoke unsubscribe-ynl rpc.
218     ${session} =    ClusterManagement.Resolve_Http_Session_For_Member    member_index=${member_index}
219     &{mapping}    BuiltIn.Create_Dictionary
220     ${text} =    TemplatedRequests.Post_As_Xml_Templated    ${UNSUBSCRIBE_YNL_DIR}    mapping=${mapping}    session=${session}
221
222 Register_Bound_Constant
223     [Arguments]    ${member_index}
224     [Documentation]    TODO: more desctiptive comment than: Invoke register-bound-constant rpc.
225     ${session} =    ClusterManagement.Resolve_Http_Session_For_Member    member_index=${member_index}
226     &{mapping}    BuiltIn.Create_Dictionary
227     ${text} =    TemplatedRequests.Post_As_Xml_Templated    ${REGISTER_BOUND_CONSTANT_DIR}    mapping=${mapping}    session=${session}
228
229 Unregister_Bound_Constant
230     [Arguments]    ${member_index}
231     [Documentation]    TODO: more desctiptive comment than: Invoke unregister-bound-constant rpc.
232     ${session} =    ClusterManagement.Resolve_Http_Session_For_Member    member_index=${member_index}
233     &{mapping}    BuiltIn.Create_Dictionary
234     TemplatedRequests.Post_As_Xml_Templated    ${UNREGISTER_BOUND_CONSTANT_DIR}    mapping=${mapping}    session=${session}
235
236 Register_Default_Constant
237     [Arguments]    ${member_index}
238     [Documentation]    TODO: more desctiptive comment than: Invoke register-default-constant rpc.
239     ${session} =    ClusterManagement.Resolve_Http_Session_For_Member    member_index=${member_index}
240     &{mapping}    BuiltIn.Create_Dictionary
241     TemplatedRequests.Post_As_Xml_Templated    ${REGISTER_DEFAULT_CONSTANT_DIR}    mapping=${mapping}    session=${session}
242
243 Unregister_Default_Constant
244     [Arguments]    ${member_index}
245     [Documentation]    TODO: more desctiptive comment than: Invoke unregister-default-constant rpc.
246     ${session} =    ClusterManagement.Resolve_Http_Session_For_Member    member_index=${member_index}
247     ${uri} =    TemplatedRequests.Resolve_Text_From_Template_Folder    folder=${UNREGISTER_DEFAULT_CONSTANT_DIR}    base_name=location    extension=uri
248     TemplatedRequests.Post_To_Uri    uri=${uri}    data=${EMPTY}    accept=${ACCEPT_JSON}    content_type=${HEADERS_YANG_JSON}    session=${session}