*** Settings *** Documentation Test suite to verify Restconf is OK Suite Setup Create Session session http://${ODL_SYSTEM_IP}:${RESTCONFPORT} auth=${AUTH} headers=${HEADERS_XML} Suite Teardown Delete All Sessions Library RequestsLibrary Library Collections Library HttpLibrary.HTTP Variables ../../../variables/Variables.py Resource ../../../libraries/Utils.robot *** Variables *** ${REST_CONTEXT} /restconf/modules ${INTENT_CONTEXT} /restconf/config/intent:intents @{intent1_correct} 10.0.0.5 10.0.0.2,10.0.0.3 allow @{intent2_correct} 10.0.0.5 10.0.0.2,10.0.0.10 block @{intent3_correct} 10.0.0.1,10.0.0.4 10.0.0.2 allow @{all_intents_correct} ${intent1_correct} ${intent2_correct} ${intent3_correct} @{intent1_bad} 10.0.0.3 10.0.0.22,10.0.0.33 allow @{intent2_bad} 10.0.0.1 10.0.0.12,10.0.0.102 block @{intent3_bad} 10.0.0.2,10.0.0.10 10.0.0.42 allow @{all_intents_bad} ${intent1_bad} ${intent2_bad} ${intent3_bad} @{all_intents_ids} *** Test Cases *** Get Controller Modules [Documentation] Get the controller modules via Restconf ${resp} RequestsLibrary.Get Request session ${REST_CONTEXT} Log ${resp.content} Should Be Equal As Strings ${resp.status_code} 200 Should Contain ${resp.content} ietf-restconf Verify REST Command Add, Update and Remove FOR ${intent} IN @{all_intents_bad} ${intent_id}= REST Add Intent @{intent} Append To List ${all_intents_ids} ${intent_id} END ${resp}= REST Get List of Intents FOR ${intent_id} IN @{all_intents_ids} Should Contain ${resp} ${intent_id} END ${size}= Get Length ${all_intents_correct} FOR ${index} IN RANGE ${size} ${intent}= Get From List ${all_intents_correct} ${index} ${intent_id}= Get From List ${all_intents_ids} ${index} REST Update Intent By Id ${intent_id} @{intent} ${intent_from}= Get From List ${intent} 0 ${intent_to}= Get From List ${intent} 1 ${intent_permission}= Get From List ${intent} 2 ${resp}= REST Get Intent From Id ${intent_id} Should Contain ${resp} ${intent_from} Should Contain ${resp} ${intent_to} Should Contain ${resp} ${intent_permission} END FOR ${id} IN @{all_intents_ids} REST Delete Intent By Id ${id} END *** Keywords *** REST Get List of Intents [Documentation] Get the list of intents configured ${resp} RequestsLibrary.Get Request session ${INTENT_CONTEXT} Should Be Equal As Strings ${resp.status_code} 200 Should Contain ${resp.content} "intents" [Return] ${resp.content} REST Get Intent From Id [Arguments] ${id} [Documentation] Get the intent detail from id ${resp} RequestsLibrary.Get Request session ${INTENT_CONTEXT}/intent/${id} Log Json ${resp.content} Should Be Equal As Strings ${resp.status_code} 200 Should Contain ${resp.content} ${id} [Return] ${resp.content} Generate Random UUID [Documentation] Generates random UUID for use with creating intents on REST API. Has the format ... (alphanumeric) 8-4-4-4-12. ${id1}= Generate Random String 8 [NUMBERS]abcdef ${id2}= Generate Random String 4 [NUMBERS]abcdef ${id3}= Generate Random String 4 [NUMBERS]abcdef ${id4}= Generate Random String 4 [NUMBERS]abcdef ${id5}= Generate Random String 12 [NUMBERS]abcdef ${id}= Catenate SEPARATOR=- ${id1} ${id2} ${id3} ${id4} ... ${id5} [Return] ${id} REST Add Intent [Arguments] ${intent_from} ${intent_to} ${intent_permission} [Documentation] Make an Intent and return the id of the new intent ${headers}= Create Dictionary Content-Type=application/json ${id}= Generate Random UUID ${data}= Catenate {"intent":{"id": "${id}","subjects":[{"order": 1,"end-point-group": {"name": "${intent_from}"}},{"order": 2,"end-point-group": { "name": "${intent_to}"}}],"actions": [{"order": 1,"${intent_permission}": {}}]}} ${resp} RequestsLibrary.Post Request session ${INTENT_CONTEXT} headers=${headers} data=${data} Should Be Equal As Strings ${resp.status_code} 204 [Return] ${id} REST Update Intent By Id [Arguments] ${id} ${intent_from} ${intent_to} ${intent_permission} [Documentation] Make an Intent and return the id of the new intent ${headers}= Create Dictionary Content-Type=application/json ${data}= Catenate {"intent":{"id": "${id}","subjects":[{"order": 1,"end-point-group": {"name": "${intent_from}"}},{"order": 2,"end-point-group": { "name": "${intent_to}"}}],"actions": [{"order": 1,"${intent_permission}": {}}]}} ${resp} RequestsLibrary.Put Request session ${INTENT_CONTEXT}/intent/${id} headers=${headers} data=${data} Should Be Equal As Strings ${resp.status_code} 200 [Return] ${resp} REST Delete All Intents [Documentation] Delete all of the Intents ${headers}= Create Dictionary Content-Type=application/json ${resp} RequestsLibrary.Delete Request session ${INTENT_CONTEXT} headers=${headers} Log ${resp} Should Be Equal As Strings ${resp.status_code} 200 [Return] ${resp.content} REST Delete Intent By Id [Arguments] ${id} [Documentation] Delete Intent by Id ${headers}= Create Dictionary Content-Type=application/json ${resp} RequestsLibrary.Delete Request session ${INTENT_CONTEXT}/intent/${id} headers=${headers} Log ${resp} Should Be Equal As Strings ${resp.status_code} 200 [Return] ${resp.content}