Refactor SFC_FullDeploy tests to not use RSP RPCs 03/74503/18
authorebrjohn <bjohnson@inocybe.com>
Thu, 26 Jul 2018 11:15:47 +0000 (13:15 +0200)
committerJamo Luhrsen <jluhrsen@redhat.com>
Fri, 3 Aug 2018 18:01:10 +0000 (18:01 +0000)
- The RSPs are no longer created via RPCs, but instead
  are created internally when the SFP is created.
- Sandbox:
    https://jenkins.opendaylight.org/sandbox/job/sfc-csit-3node-docker-full-deploy-all-fluorine/

Change-Id: I33f980b7360b4f5ed2a92449559c182883b68d43
Signed-off-by: Brady Johnson <bjohnson@inocybe.com>
csit/libraries/SFC/SfcKeywords.robot
csit/libraries/Utils.robot
csit/suites/sfc/Full_Deploy/010__sfc_full_deploy.robot
csit/suites/sfc/Full_Deploy/015__sfc_rendered_service_paths_logical.robot
csit/suites/sfc/Full_Deploy/016__sfc_symmetric_RSP.robot [deleted file]
csit/suites/sfc/SFC_Basic/070__sfc_rendered_service_paths.robot
csit/variables/sfc/Variables.robot
csit/variables/sfc/master/full-deploy/service-function-acls.json

index 2dafb53d85f5ce895da6be8c33be2f070267dc45..327a48d6aed0db941022de8ce6365e09d87a8881 100644 (file)
@@ -1,16 +1,11 @@
 *** Settings ***
 Documentation     Common Keywords for the SFC Test suites.
 Library           Collections
-Resource          ../../../libraries/Utils.robot
+Resource          ../Utils.robot
 
 *** Variables ***
 
 *** Keywords ***
-Post Elements To URI As JSON
-    [Arguments]    ${uri}    ${data}
-    ${resp} =    RequestsLibrary.Post Request    session    ${uri}    data=${data}    headers=${headers}
-    BuiltIn.Should Contain    ${ALLOWED_STATUS_CODES}    ${resp.status_code}
-
 Get JSON Elements From URI
     [Arguments]    ${uri}
     ${resp} =    RequestsLibrary.Get Request    session    ${uri}
@@ -19,8 +14,8 @@ Get JSON Elements From URI
 Check Classifier Flows
     ${flowList} =    DockerSfc.Get Flows In Docker Containers
     BuiltIn.log    ${flowList}
-    BuiltIn.Should Contain Match    ${flowList}    *actions=pop_nsh*
-    BuiltIn.Should Contain Match    ${flowList}    *actions=push_nsh*
+    BuiltIn.Should Contain    ${flowList}    *actions=pop_nsh*
+    BuiltIn.Should Contain    ${flowList}    *actions=push_nsh*
 
 Check Service Function Types Added
     [Arguments]    ${elements}
@@ -71,11 +66,22 @@ Get Rendered Service Path Name
     [Return]    ${value}
 
 Create Sfp And Wait For Rsp Creation
-    [Arguments]    ${sfp_file_name}    ${created_sfps}
+    [Arguments]    ${sfp_file_name}
     [Documentation]    Given an SFP name, create it and wait for the associated RSPs to be created
     Utils.Add Elements To URI From File And Verify    ${SERVICE_FUNCTION_PATHS_URI}    ${sfp_file_name}
-    BuiltIn.Run Keyword If    len(${created_sfps}) > 0    BuiltIn.Wait Until Keyword Succeeds    60s    2s    Utils.Check For Elements At URI    ${SERVICE_FUNCTION_PATHS_STATE_URI}
-    ...    ${created_sfps}
+    ${sfp_dict} =    Utils.Json Parse From File    ${sfp_file_name}
+    ${sfps} =    Collections.Get_From_Dictionary    ${sfp_dict}    service-function-paths
+    ${sfp_json_list} =    Collections.Get_From_Dictionary    ${sfps}    service-function-path
+    ${list_length} =    BuiltIn.Get Length    ${sfp_json_list}
+    # Each SFP state entry returned from ODL will have either 2 or 3 name elements, 2 for non-symmetric 3 for symmetric RSP
+    : FOR    ${i}    IN RANGE    ${list_length}
+    \    ${sfp_entry_dict} =    Collections.Get From List    ${sfp_json_list}    ${i}
+    \    ${sfp_name} =    Collections.Get_From_Dictionary    ${sfp_entry_dict}    name
+    \    ${status}    ${symmetric} =    BuiltIn.Run Keyword And Ignore Error    Collections.Get_From_Dictionary    ${sfp_entry_dict}    symmetric
+    \    ${symmetric} =    BuiltIn.Set Variable If    "${status}" == "FAIL"    False    ${symmetric}
+    \    ${num_names} =    BuiltIn.Set Variable If    "${symmetric}" == "False"    2    3
+    \    BuiltIn.Wait Until Keyword Succeeds    60s    2s    Utils.Check For Specific Number Of Elements At URI    ${SERVICE_FUNCTION_PATH_STATE_URI}${sfp_name}    name
+    \    ...    ${num_names}
 
 Delete Sfp And Wait For Rsps Deletion
     [Arguments]    ${sfp_name}
index 497dcb16d7de843edaa25a912971ee9d43cf200a..d7ca233ef5ec5f8773187e6a691019c6c12f26a1 100644 (file)
@@ -320,21 +320,21 @@ Remove All Elements If Exist
 
 Add Elements To URI From File
     [Arguments]    ${dest_uri}    ${data_file}    ${headers}=${headers}    ${session}=session
+    [Documentation]    Put data from a file to a URI
     ${body}    OperatingSystem.Get File    ${data_file}
     ${resp}    RequestsLibrary.Put Request    ${session}    ${dest_uri}    data=${body}    headers=${headers}
     Should Contain    ${ALLOWED_STATUS_CODES}    ${resp.status_code}
 
 Add Elements To URI From File And Verify
     [Arguments]    ${dest_uri}    ${data_file}    ${headers}=${headers}    ${session}=session
+    [Documentation]    Put data from a file to a URI and verify the HTTP response
     ${body}    OperatingSystem.Get File    ${data_file}
-    ${resp}    RequestsLibrary.Put Request    ${session}    ${dest_uri}    data=${body}    headers=${headers}
-    Should Contain    ${ALLOWED_STATUS_CODES}    ${resp.status_code}
-    ${resp}    RequestsLibrary.Get Request    ${session}    ${dest_uri}
-    Should Not Be Equal    ${resp.status_code}    404
+    Add Elements to URI And Verify    ${dest_uri}    ${body}    ${headers}    ${session}
 
 Add Elements To URI And Verify
-    [Arguments]    ${dest_uri}    ${data_file}    ${headers}=${headers}    ${session}=session
-    ${resp}    RequestsLibrary.Put Request    ${session}    ${dest_uri}    ${data_file}    headers=${headers}
+    [Arguments]    ${dest_uri}    ${data}    ${headers}=${headers}    ${session}=session
+    [Documentation]    Put data to a URI and verify the HTTP response
+    ${resp}    RequestsLibrary.Put Request    ${session}    ${dest_uri}    ${data}    headers=${headers}
     Should Contain    ${ALLOWED_STATUS_CODES}    ${resp.status_code}
     ${resp}    RequestsLibrary.Get Request    ${session}    ${dest_uri}
     Should Not Be Equal    ${resp.status_code}    404
@@ -382,6 +382,14 @@ Get Data From URI
     Builtin.Log    ${response.text}
     Builtin.Fail    The request failed with code ${response.status_code}
 
+Get URI And Verify
+    [Arguments]    ${uri}    ${session}=session    ${headers}=${NONE}
+    [Documentation]    Issue a GET request and verify a successfull HTTP return.
+    ...    Issues a GET request for ${uri} in ${session} using headers from ${headers}.
+    ${response} =    RequestsLibrary.Get Request    ${session}    ${uri}    ${headers}
+    Builtin.Log    ${response.status_code}
+    Should Contain    ${ALLOWED_STATUS_CODES}    ${response.status_code}
+
 No Content From URI
     [Arguments]    ${session}    ${uri}    ${headers}=${NONE}
     [Documentation]    Issue a GET request and return on error 404 (No content) or will fail and log the content.
index 4f459c92f778e44aac3bb7aa32e81e429dee0c18..d39d7e835e862e11b5bed97cb88ad08a678b9bf7 100644 (file)
@@ -1,5 +1,5 @@
 *** Settings ***
-Documentation     Test suite for SFC Service Functions, Operates functions from Restconf APIs.
+Documentation     Test suite for SFC Rendered Service Paths and Classifiers.
 Suite Setup       Init Suite
 Suite Teardown    Cleanup Suite
 Library           SSHLibrary
@@ -14,89 +14,93 @@ Resource          ../../../libraries/TemplatedRequests.robot
 Resource          ../../../libraries/KarafKeywords.robot
 Resource          ../../../libraries/DataModels.robot
 Resource          ../../../libraries/SFC/DockerSfc.robot
+Resource          ../../../libraries/Utils.robot
 Variables         ../../../variables/sfc/Modules.py
 
-*** Variables ***
-${CREATE_RSP1_INPUT}    {"input":{"parent-service-function-path":"SFP1","name":"RSP1"}}
-${CREATE_RSP_FAILURE_INPUT}    {"input":{"parent-service-function-path":"SFC1-empty","name":"RSP1-empty-Path-1"}}
-@{SF_NAMES}       "name":"firewall-1"    "name":"dpi-1"
-@{INTERFACE_NAMES}    v-ovsnsn6g1    v-ovsnsn1g1
-
 *** Test Cases ***
 Basic Environment Setup Tests
-    [Documentation]    Prepare Basic Test Environment
-    Add Elements To URI From File    ${SERVICE_FORWARDERS_URI}    ${SERVICE_FORWARDERS_FILE}
-    Add Elements To URI From File    ${SERVICE_NODES_URI}    ${SERVICE_NODES_FILE}
-    Add Elements To URI From File    ${SERVICE_FUNCTIONS_URI}    ${SERVICE_FUNCTIONS_FILE}
-    Wait Until Keyword Succeeds    60s    2s    Check Service Function Types Added    ${SF_NAMES}
-    Add Elements To URI From File    ${SERVICE_CHAINS_URI}    ${SERVICE_CHAINS_FILE}
-    Add Elements To URI From File    ${SERVICE_METADATA_URI}    ${SERVICE_METADATA_FILE}
-    Add Elements To URI From File    ${SERVICE_FUNCTION_PATHS_URI}    ${SERVICE_FUNCTION_PATHS_FILE}
-    Add Elements To URI From File    ${SERVICE_FUNCTION_ACLS_URI}    ${SERVICE_FUNCTION_ACLS_FILE}
+    [Documentation]    Prepare Basic Test Environment. Full Deploy
+    Utils.Add Elements To URI From File    ${SERVICE_FORWARDERS_URI}    ${SERVICE_FORWARDERS_FILE}
+    Utils.Add Elements To URI From File    ${SERVICE_NODES_URI}    ${SERVICE_NODES_FILE}
+    Utils.Add Elements To URI From File    ${SERVICE_FUNCTIONS_URI}    ${SERVICE_FUNCTIONS_FILE}
+    BuiltIn.Wait Until Keyword Succeeds    60s    2s    SfcKeywords.Check Service Function Types Added    ${SF_NAMES}
+    Utils.Add Elements To URI From File    ${SERVICE_CHAINS_URI}    ${SERVICE_CHAINS_FILE}
+    Utils.Add Elements To URI From File    ${SERVICE_METADATA_URI}    ${SERVICE_METADATA_FILE}
+    SfcKeywords.Create Sfp And Wait For Rsp Creation    ${SERVICE_FUNCTION_PATHS_FILE}
+    ${rsp_name} =    SfcKeywords.Get Rendered Service Path Name    ${SFP_NAME}
+    ${rsp_rev_name} =    SfcKeywords.Get Rendered Service Path Name    ${SFP_NAME}    True
+    ${mapping} =    BuiltIn.Create Dictionary    RSP1=${rsp_name}    RSP1_Reverse=${rsp_rev_name}
+    ${sf_acl_text} =    TemplatedRequests.Resolve_Text_From_Template_File    folder=${CONFIG_DIR}    file_name=${SERVICE_FUNCTION_ACLS_FILE}    mapping=${mapping}
+    Utils.Add Elements To URI And Verify    ${SERVICE_FUNCTION_ACLS_URI}    ${sf_acl_text}
 
-Create and Get Rendered Service Path
-    [Documentation]    Create and Get Rendered Service Path Through RESTConf APIs
-    Post Elements To URI As JSON    ${OPERATIONS_CREATE_RSP_URI}    ${CREATE_RSP1_INPUT}
-    ${resp}    RequestsLibrary.Get Request    session    ${OPERATIONAL_RSPS_URI}
-    Should Contain    ${ALLOWED_STATUS_CODES}    ${resp.status_code}
-    ${elements}=    Create List    RSP1    "parent-service-function-path":"SFP1"    "hop-number":0    "service-index":255    "hop-number":1
+Get Rendered Service Path By Name
+    [Documentation]    Get Rendered Service Path By Name Through RESTConf APIs. Full Deploy
+    # The RSP should be symetric, so 2 should be created for the SFP
+    ${rsp_name} =    SfcKeywords.Get Rendered Service Path Name    ${SFP_NAME}
+    Utils.Get URI And Verify    ${OPERATIONAL_RSP_URI}${rsp_name}
+    ${rsp_rev_name} =    SfcKeywords.Get Rendered Service Path Name    ${SFP_NAME}    True
+    Utils.Get URI And Verify    ${OPERATIONAL_RSP_URI}${rsp_rev_name}
+    ${elements} =    BuiltIn.Create List    ${rsp_name}    "parent-service-function-path":"${SFP_NAME}"    "hop-number":0    "service-index":255    "hop-number":1
     ...    "service-index":254
-    Check For Elements At URI    ${OPERATIONAL_RSPS_URI}    ${elements}
+    Utils.Check For Elements At URI    ${OPERATIONAL_RSPS_URI}    ${elements}
 
 Create and Get Classifiers
-    [Documentation]    Apply json file descriptions of ACLs and Classifiers
-    Add Elements To URI From File    ${SERVICE_CLASSIFIERS_URI}    ${SERVICE_CLASSIFIERS_FILE}
-    ${classifiers}=    Create List    "service-function-classifiers"    "service-function-classifier"    "type":"ietf-access-control-list:ipv4-acl"    "scl-service-function-forwarder"
+    [Documentation]    Apply json file descriptions of ACLs and Classifiers. Full Deploy
+    Utils.Add Elements To URI From File    ${SERVICE_CLASSIFIERS_URI}    ${SERVICE_CLASSIFIERS_FILE}
+    ${classifiers}=    BuiltIn.Create List    "service-function-classifiers"    "service-function-classifier"    "type":"ietf-access-control-list:ipv4-acl"    "scl-service-function-forwarder"
     Append To List    ${classifiers}    "name":"Classifier2"    "name":"ACL2"
     Append To List    ${classifiers}    "name":"Classifier1"    "name":"ACL1"
-    Check For Elements At URI    ${SERVICE_CLASSIFIERS_URI}    ${classifiers}
-    Wait Until Keyword Succeeds    60s    2s    Check Classifier Flows
+    Utils.Check For Elements At URI    ${SERVICE_CLASSIFIERS_URI}    ${classifiers}
+    BuiltIn.Wait Until Keyword Succeeds    60s    2s    SfcKeywords.Check Classifier Flows
 
 *** Keywords ***
 Init Suite
     [Documentation]    Connect Create session and initialize ODL version specific variables
-    Create Session    session    http://${ODL_SYSTEM_IP}:${RESTCONFPORT}    auth=${AUTH}    headers=${HEADERS}
+    RequestsLibrary.Create Session    session    http://${ODL_SYSTEM_IP}:${RESTCONFPORT}    auth=${AUTH}    headers=${HEADERS}
     SSHLibrary.Open Connection    ${TOOLS_SYSTEM_IP}    timeout=3s
     SSHKeywords.Flexible Mininet Login
-    ${docker_cidr}=    DockerSfc.Get Docker Bridge Subnet
-    ${docker_nw}=    SfcUtils.Get Network From Cidr    ${docker_cidr}
-    ${docker_mask}=    SfcUtils.Get Mask From Cidr    ${docker_cidr}
-    ${route_to_docker_net}=    Set Variable    sudo route add -net ${docker_nw} netmask ${docker_mask} gw ${TOOLS_SYSTEM_IP}
-    Run Command On Remote System    ${ODL_SYSTEM_IP}    ${route_to_docker_net}    ${ODL_SYSTEM_USER}    prompt=${ODL_SYSTEM_PROMPT}
+    ${docker_cidr} =    DockerSfc.Get Docker Bridge Subnet
+    ${docker_nw} =    SfcUtils.Get Network From Cidr    ${docker_cidr}
+    ${docker_mask} =    SfcUtils.Get Mask From Cidr    ${docker_cidr}
+    ${route_to_docker_net} =    BuiltIn.Set Variable    sudo route add -net ${docker_nw} netmask ${docker_mask} gw ${TOOLS_SYSTEM_IP}
+    Utils.Run Command On Remote System    ${ODL_SYSTEM_IP}    ${route_to_docker_net}    ${ODL_SYSTEM_USER}    prompt=${ODL_SYSTEM_PROMPT}
     SSHLibrary.Put File    ${CURDIR}/docker-ovs.sh    .    mode=0755
     SSHLibrary.Put File    ${CURDIR}/Dockerfile    .    mode=0755
     SSHLibrary.Put File    ${CURDIR}/setup-docker-image.sh    .    mode=0755
-    ${result}    SSHLibrary.Execute Command    ./setup-docker-image.sh > >(tee myFile.log) 2> >(tee myFile.log)    return_stderr=True    return_stdout=True    return_rc=True
-    log    ${result}
-    Should be equal as integers    ${result[2]}    0
+    ${result} =    SSHLibrary.Execute Command    ./setup-docker-image.sh > >(tee myFile.log) 2> >(tee myFile.log)    return_stderr=True    return_stdout=True    return_rc=True
+    BuiltIn.log    ${result}
+    BuiltIn.Should be equal as integers    ${result[2]}    0
+    BuiltIn.Set Suite Variable    @{INTERFACE_NAMES}    v-ovsnsn6g1    v-ovsnsn1g1
     DockerSfc.Docker Ovs Start    nodes=6    guests=1    tunnel=vxlan-gpe    odl_ip=${ODL_SYSTEM_IP}
-    Wait Until Keyword Succeeds    60s    2s    Check For Elements At URI    ${OVSDB_TOPOLOGY_URI}    ${INTERFACE_NAMES}
-    ${docker_name_list}=    DockerSfc.Get Docker Names As List
-    Set Suite Variable    ${DOCKER_NAMES_LIST}    ${docker_name_list}
-    log    ${ODL_STREAM}
-    Set Suite Variable    ${CONFIG_DIR}    ${CURDIR}/../../../variables/sfc/master/full-deploy
-    Set Suite Variable    ${SERVICE_FUNCTIONS_FILE}    ${CONFIG_DIR}/service-functions.json
-    Set Suite Variable    ${SERVICE_FORWARDERS_FILE}    ${CONFIG_DIR}/service-function-forwarders.json
-    Set Suite Variable    ${SERVICE_NODES_FILE}    ${CONFIG_DIR}/service-nodes.json
-    Set Suite Variable    ${SERVICE_CHAINS_FILE}    ${CONFIG_DIR}/service-function-chains.json
-    Set Suite Variable    ${SERVICE_FUNCTION_PATHS_FILE}    ${CONFIG_DIR}/service-function-paths.json
-    Set Suite Variable    ${SERVICE_METADATA_FILE}    ${CONFIG_DIR}/service-function-metadata.json
-    Set Suite Variable    ${SERVICE_FUNCTION_ACLS_FILE}    ${CONFIG_DIR}/service-function-acls.json
-    Set Suite Variable    ${SERVICE_CLASSIFIERS_FILE}    ${CONFIG_DIR}/service-function-classifiers.json
-    Switch Ips In Json Files    ${CONFIG_DIR}    ${DOCKER_NAMES_LIST}
+    BuiltIn.Wait Until Keyword Succeeds    60s    2s    Utils.Check For Elements At URI    ${OVSDB_TOPOLOGY_URI}    ${INTERFACE_NAMES}
+    ${docker_name_list} =    DockerSfc.Get Docker Names As List
+    BuiltIn.Set Suite Variable    ${DOCKER_NAMES_LIST}    ${docker_name_list}
+    BuiltIn.log    ${ODL_STREAM}
+    BuiltIn.Set Suite Variable    ${SFP_NAME}    SFP1
+    BuiltIn.Set Suite Variable    ${CONFIG_DIR}    ${CURDIR}/../../../variables/sfc/master/full-deploy
+    BuiltIn.Set Suite Variable    ${SERVICE_FUNCTIONS_FILE}    ${CONFIG_DIR}/service-functions.json
+    BuiltIn.Set Suite Variable    ${SERVICE_FORWARDERS_FILE}    ${CONFIG_DIR}/service-function-forwarders.json
+    BuiltIn.Set Suite Variable    ${SERVICE_NODES_FILE}    ${CONFIG_DIR}/service-nodes.json
+    BuiltIn.Set Suite Variable    ${SERVICE_CHAINS_FILE}    ${CONFIG_DIR}/service-function-chains.json
+    BuiltIn.Set Suite Variable    ${SERVICE_FUNCTION_PATHS_FILE}    ${CONFIG_DIR}/service-function-paths.json
+    BuiltIn.Set Suite Variable    ${SERVICE_METADATA_FILE}    ${CONFIG_DIR}/service-function-metadata.json
+    BuiltIn.Set Suite Variable    ${SERVICE_FUNCTION_ACLS_FILE}    service-function-acls.json
+    BuiltIn.Set Suite Variable    ${SERVICE_CLASSIFIERS_FILE}    ${CONFIG_DIR}/service-function-classifiers.json
+    BuiltIn.Set Suite Variable    @{SF_NAMES}    "firewall-1"    "dpi-1"
+    SfcKeywords.Switch Ips In Json Files    ${CONFIG_DIR}    ${DOCKER_NAMES_LIST}
 
 Cleanup Suite
     [Documentation]    Clean up all docker containers created and delete sessions
-    Get Model Dump    ${ODL_SYSTEM_IP}    ${sfc_data_models}
-    Remove All Elements At URI    ${SERVICE_CLASSIFIERS_URI}
-    Remove All Elements At URI    ${SERVICE_FUNCTION_ACLS_URI}
-    Remove All Elements At URI    ${SERVICE_FUNCTIONS_URI}
-    Wait Until Keyword Succeeds    60s    2s    Check Service Function Types Removed    ${SF_NAMES}
-    Remove All Elements At URI    ${SERVICE_FORWARDERS_URI}
-    Remove All Elements At URI    ${SERVICE_NODES_URI}
-    Remove All Elements At URI    ${SERVICE_CHAINS_URI}
-    Remove All Elements At URI    ${SERVICE_FUNCTION_PATHS_URI}
-    Remove All Elements At URI    ${SERVICE_METADATA_URI}
+    DataModels.Get Model Dump    ${ODL_SYSTEM_IP}    ${sfc_data_models}
+    Utils.Remove All Elements At URI    ${SERVICE_CLASSIFIERS_URI}
+    Utils.Remove All Elements At URI    ${SERVICE_FUNCTION_ACLS_URI}
+    SfcKeywords.Delete Sfp And Wait For Rsps Deletion    ${SFP_NAME}
+    Utils.Remove All Elements At URI    ${SERVICE_FUNCTIONS_URI}
+    BuiltIn.Wait Until Keyword Succeeds    60s    2s    SfcKeywords.Check Service Function Types Removed    ${SF_NAMES}
+    Utils.Remove All Elements At URI    ${SERVICE_FORWARDERS_URI}
+    Utils.Remove All Elements At URI    ${SERVICE_NODES_URI}
+    Utils.Remove All Elements At URI    ${SERVICE_CHAINS_URI}
+    Utils.Remove All Elements At URI    ${SERVICE_METADATA_URI}
     DockerSfc.Docker Ovs Clean    log_file=myFile4.log
-    Delete All Sessions
+    RequestsLibrary.Delete All Sessions
     SSHLibrary.Close Connection
index 40575e957c3458bcdae7867a114b733fc36b1c5a..eeeb0a49a74f7f0b90613b3be52a165d63573f35 100644 (file)
@@ -1,9 +1,7 @@
 *** Settings ***
-Documentation     Test suite for SFC Service Functions, Operates functions from Restconf APIs. Logical SFF
+Documentation     Test suite for SFC Rendered Service Paths. Logical SFF
 Suite Setup       Init Suite
-Suite Teardown    Delete All Sessions
-Test Setup        Create All Elements
-Test Teardown     Delete All Elements
+Suite Teardown    Delete All Elements
 Library           SSHLibrary
 Library           Collections
 Library           OperatingSystem
@@ -14,123 +12,65 @@ Resource          ../../../variables/sfc/Variables.robot
 Resource          ../../../libraries/Utils.robot
 Resource          ../../../libraries/TemplatedRequests.robot
 
-*** Variables ***
-${VERSION_DIR}    master
-${SERVICE_FUNCTIONS_FILE}    ${CURDIR}/../../../variables/sfc/${VERSION_DIR}/service-functions-logicalsff.json
-${SERVICE_FORWARDERS_FILE}    ${CURDIR}/../../../variables/sfc/${VERSION_DIR}/service-function-forwarders-logicallsff.json
-${SERVICE_CHAINS_FILE}    ${CURDIR}/../../../variables/sfc/${VERSION_DIR}/service-function-chains-logicalsff.json
-${SERVICE_FUNCTION_PATHS_FILE}    ${CURDIR}/../../../variables/sfc/${VERSION_DIR}/service-function-paths-logicalsff.json
-${CREATE_RSP1_INPUT}    {"input":{"name": "RSP1","parent-service-function-path": "SFP1","symmetric": "true"}}
-${CREATE_RSP2_INPUT}    {"input":{"name": "RSP2","parent-service-function-path": "SFP2","symmetric": "true"}}
-${CREATE_RSP_FAILURE_INPUT}    {"input":{"name": "RSP1","parent-service-function-path": "SFP3","symmetric": "true"}}
-${DELETE_RSP1_INPUT}    {"input":{"name":"RSP1"}}
-${DELETE_RSP1_REVERSE_INPUT}    {"input":{"name":"RSP1-Reverse"}}
-${DELETE_RSP2_INPUT}    {"input":{"name":"RSP2"}}
-@{SF_NAMES}       "name":"firewall-1"    "name":"dpi-1"
-
 *** Test Cases ***
 Basic Environment Setup Tests
     [Documentation]    Prepare Basic Test Environment. Logical SFF
-    Add Elements To URI From File    ${SERVICE_FORWARDERS_URI}    ${SERVICE_FORWARDERS_FILE}
-    Add Elements To URI From File    ${SERVICE_FUNCTIONS_URI}    ${SERVICE_FUNCTIONS_FILE}
-    Wait Until Keyword Succeeds    60s    2s    Check Service Function Types Added    ${SF_NAMES}
-    Add Elements To URI From File    ${SERVICE_CHAINS_URI}    ${SERVICE_CHAINS_FILE}
-    Add Elements To URI From File    ${SERVICE_FUNCTION_PATHS_URI}    ${SERVICE_FUNCTION_PATHS_FILE}
-
-Create and Get Rendered Service Path
-    [Documentation]    Create and Get Rendered Service Path Through RESTConf APIs. Logical SFF
-    [Tags]    include
-    Post Elements To URI    ${OPERATIONS_CREATE_RSP_URI}    ${CREATE_RSP1_INPUT}
-    ${resp}    RequestsLibrary.Get Request    session    ${OPERATIONAL_RSPS_URI}
-    Should Contain    ${ALLOWED_STATUS_CODES}    ${resp.status_code}
-    ${elements1}=    Create List    RSP1    "parent-service-function-path":"SFP1"    "service-chain-name":"SFC1"    "hop-number":0    "service-index":255
-    ...    "hop-number":1    "service-index":254    "service-function-forwarder":"sfflogical1"    "sfc-encapsulation":"service-locator:nsh"
-    ${elements2}=    Create List    RSP1-Reverse    "parent-service-function-path":"SFP1"    "service-chain-name":"SFC1"    "hop-number":0    "service-index":255
-    ...    "hop-number":1    "service-index":254    "service-function-forwarder":"sfflogical1"    "sfc-encapsulation":"service-locator:nsh"
-    ${elements}=    Combine Lists    ${elements1}    ${elements2}
-    Check For Elements At URI    ${OPERATIONAL_RSPS_URI}    ${elements}
-
-Create Get Rendered Service Path Failure
-    [Documentation]    Create Rendered Service Path Failure Cases. Logical SFF
-    ${resp}    RequestsLibrary.Post Request    session    ${OPERATIONS_CREATE_RSP_URI}    data=${CREATE_RSP_FAILURE_INPUT}    headers=${headers}
-    Should Be Equal As Strings    ${resp.status_code}    500
+    Utils.Add Elements To URI From File    ${SERVICE_FORWARDERS_URI}    ${SERVICE_FORWARDERS_FILE}
+    Utils.Add Elements To URI From File    ${SERVICE_FUNCTIONS_URI}    ${SERVICE_FUNCTIONS_FILE}
+    BuiltIn.Wait Until Keyword Succeeds    60s    2s    SfcKeywords.Check Service Function Types Added    ${SF_NAMES}
+    Utils.Add Elements To URI From File    ${SERVICE_CHAINS_URI}    ${SERVICE_CHAINS_FILE}
+    SfcKeywords.Create Sfp And Wait For Rsp Creation    ${SERVICE_FUNCTION_PATHS_FILE}
 
 Get Rendered Service Path By Name
     [Documentation]    Get Rendered Service Path By Name Through RESTConf APIs. Logical SFF
-    Post Elements To URI    ${OPERATIONS_CREATE_RSP_URI}    ${CREATE_RSP1_INPUT}
-    ${resp}    RequestsLibrary.Get Request    session    ${OPERATIONAL_RSPS_URI}rendered-service-path/RSP1
-    Should Contain    ${ALLOWED_STATUS_CODES}    ${resp.status_code}
-    ${elements}=    Create List    RSP1    "parent-service-function-path":"SFP1"    "hop-number":0    "service-index":255    "hop-number":1
-    ...    "service-index":254
-    Check For Elements At URI    ${OPERATIONAL_RSPS_URI}    ${elements}
-
-Get Non Existing Rendered Service Path
-    [Documentation]    Get Non Existing Rendered Service Path Through RESTConf APIs. Logical SFF
-    Post Elements To URI    ${OPERATIONS_CREATE_RSP_URI}    ${CREATE_RSP1_INPUT}
-    ${resp}    RequestsLibrary.Get Request    session    ${OPERATIONAL_RSPS_URI}rendered-service-path/non-existing-rsp
-    Should Be Equal As Strings    ${resp.status_code}    404
-    ${resp}    RequestsLibrary.Get Request    session    ${OPERATIONAL_RSPS_URI}
-    Should Contain    ${ALLOWED_STATUS_CODES}    ${resp.status_code}
-    Should Not Contain    ${resp.content}    non-existing-rsp
+    # The RSP should be symetric, so 2 should be created for the SFP
+    ${rsp_name} =    SfcKeywords.Get Rendered Service Path Name    ${SFP_NAME}
+    Utils.Get URI And Verify    ${OPERATIONAL_RSP_URI}${rsp_name}
+    ${rsp_name_rev} =    SfcKeywords.Get Rendered Service Path Name    ${SFP_NAME}
+    Utils.Get URI And Verify    ${OPERATIONAL_RSP_URI}${rsp_name_rev}
+    ${elements} =    Create List    "parent-service-function-path":"${SFP_NAME}"    "hop-number":0    "service-index":255    "hop-number":1    "service-index":254
+    Utils.Check For Elements At URI    ${OPERATIONAL_RSPS_URI}    ${elements}
 
 Delete one Rendered Service Path By Name
     [Documentation]    Delete One Rendered Service Path By Name Through RESTConf APIs. Logical SFF
-    Post Elements To URI    ${OPERATIONS_CREATE_RSP_URI}    ${CREATE_RSP1_INPUT}
-    ${resp}    RequestsLibrary.Get Request    session    ${OPERATIONAL_RSPS_URI}rendered-service-path/RSP1-Reverse
-    Should Contain    ${ALLOWED_STATUS_CODES}    ${resp.status_code}
-    Should Contain    ${resp.content}    RSP1-Reverse
-    Post Elements To URI    ${OPERATIONS_DELETE_RSP_URI}    ${DELETE_RSP1_REVERSE_INPUT}
-    ${resp}    RequestsLibrary.Get Request    session    ${OPERATIONAL_RSPS_URI}rendered-service-path/RSP1-Reverse
-    Should Be Equal As Strings    ${resp.status_code}    404
-    ${resp}    RequestsLibrary.Get Request    session    ${OPERATIONAL_RSPS_URI}
-    Should Contain    ${ALLOWED_STATUS_CODES}    ${resp.status_code}
-    Should Not Contain    ${resp.content}    RSP1-Reverse
-
-Delete Non Existing Rendered Service Path By Name
-    [Documentation]    Delete One Rendered Service Path By Name Through RESTConf APIs. Logical SFF
-    Post Elements To URI    ${OPERATIONS_CREATE_RSP_URI}    ${CREATE_RSP1_INPUT}
-    ${resp}    RequestsLibrary.Get Request    session    ${OPERATIONAL_RSPS_URI}rendered-service-path/RSP1
-    Should Contain    ${ALLOWED_STATUS_CODES}    ${resp.status_code}
-    Should Contain    ${resp.content}    RSP1
-    Post Elements To URI    ${OPERATIONS_DELETE_RSP_URI}    ${DELETE_RSP2_INPUT}
-    ${resp}    RequestsLibrary.Get Request    session    ${OPERATIONAL_RSPS_URI}
-    Should Contain    ${ALLOWED_STATUS_CODES}    ${resp.status_code}
-    Should Not Contain    ${resp.content}    {"rendered-service-paths":{}}
+    # First verify that the RSPs exist
+    ${rsp_name} =    SfcKeywords.Get Rendered Service Path Name    ${SFP_NAME}
+    Utils.Get URI And Verify    ${OPERATIONAL_RSP_URI}${rsp_name}
+    ${rsp_name_rev} =    SfcKeywords.Get Rendered Service Path Name    ${SFP_NAME}    True
+    Utils.Get URI And Verify    ${OPERATIONAL_RSP_URI}${rsp_name_rev}
+    # Delete the SFP, which will delete the RSPs
+    SfcKeywords.Delete Sfp And Wait For Rsps Deletion    ${SFP_NAME}
 
 Get Rendered Service Path Hop
     [Documentation]    Get Rendered Service Path By Name Through RESTConf APIs. Logical SFF
-    Post Elements To URI    ${OPERATIONS_CREATE_RSP_URI}    ${CREATE_RSP1_INPUT}
-    ${resp}    RequestsLibrary.Get Request    session    ${OPERATIONAL_RSPS_URI}rendered-service-path/RSP1/rendered-service-path-hop/0/
-    Should Contain    ${ALLOWED_STATUS_CODES}    ${resp.status_code}
-    ${elements}=    Create List    "hop-number":0    "service-index":255    "service-function-name":"dpi-1
-    Check For Elements At URI    ${OPERATIONAL_RSPS_URI}rendered-service-path/RSP1/rendered-service-path-hop/0/    ${elements}
-    ${resp}    RequestsLibrary.Get Request    session    ${OPERATIONAL_RSPS_URI}rendered-service-path/RSP1/rendered-service-path-hop/1/
-    Should Contain    ${ALLOWED_STATUS_CODES}    ${resp.status_code}
-    ${elements}=    Create List    "hop-number":1    "service-index":254    "service-function-name":"firewall-1
-    Check For Elements At URI    ${OPERATIONAL_RSPS_URI}rendered-service-path/RSP1/rendered-service-path-hop/1/    ${elements}
-    ${resp}    RequestsLibrary.Get Request    session    ${OPERATIONAL_RSPS_URI}rendered-service-path/RSP1/rendered-service-path-hop/2/
-    Should Be Equal As Strings    ${resp.status_code}    404
-    Post Elements To URI    ${OPERATIONS_DELETE_RSP_URI}    ${DELETE_RSP1_INPUT}
+    # Create the SFP, which will create the RSPs
+    SfcKeywords.Create Sfp And Wait For Rsp Creation    ${SERVICE_FUNCTION_PATHS_FILE}
+    ${rsp_name} =    SfcKeywords.Get Rendered Service Path Name    ${SFP_NAME}
+    ${elements} =    BuiltIn.Create List    "hop-number":0    "service-index":255    "service-function-name":"dpi-1
+    Utils.Check For Elements At URI    ${OPERATIONAL_RSPS_URI}rendered-service-path/${rsp_name}/rendered-service-path-hop/0/    ${elements}
+    ${elements} =    BuiltIn.Create List    "hop-number":1    "service-index":254    "service-function-name":"firewall-1
+    Utils.Check For Elements At URI    ${OPERATIONAL_RSPS_URI}rendered-service-path/${rsp_name}/rendered-service-path-hop/1/    ${elements}
+    ${resp} =    RequestsLibrary.Get Request    session    ${OPERATIONAL_RSPS_URI}rendered-service-path/RSP1/rendered-service-path-hop/2/
+    BuiltIn.Should Be Equal As Strings    ${resp.status_code}    404
 
 *** Keywords ***
 Init Suite
     [Documentation]    Create session and initialize ODL version specific variables
-    Create Session    session    http://${ODL_SYSTEM_IP}:${RESTCONFPORT}    auth=${AUTH}    headers=${HEADERS}
-    log    ${ODL_STREAM}
+    RequestsLibrary.Create Session    session    http://${ODL_SYSTEM_IP}:${RESTCONFPORT}    auth=${AUTH}    headers=${HEADERS}
+    BuiltIn.log    ${ODL_STREAM}
+    BuiltIn.Set Suite Variable    ${SFP_NAME}    SFP1
+    BuiltIn.Set Suite Variable    ${VERSION_DIR}    master
+    BuiltIn.Set Suite Variable    ${SERVICE_FUNCTIONS_FILE}    ${CURDIR}/../../../variables/sfc/${VERSION_DIR}/service-functions-logicalsff.json
+    BuiltIn.Set Suite Variable    ${SERVICE_FORWARDERS_FILE}    ${CURDIR}/../../../variables/sfc/${VERSION_DIR}/service-function-forwarders-logicallsff.json
+    BuiltIn.Set Suite Variable    ${SERVICE_CHAINS_FILE}    ${CURDIR}/../../../variables/sfc/${VERSION_DIR}/service-function-chains-logicalsff.json
+    BuiltIn.Set Suite Variable    ${SERVICE_FUNCTION_PATHS_FILE}    ${CURDIR}/../../../variables/sfc/${VERSION_DIR}/service-function-paths-logicalsff.json
+    BuiltIn.Set Suite Variable    @{SF_NAMES}    "name":"firewall-1"    "name":"dpi-1"
 
 Delete All Elements
     [Documentation]    Delete all provisioned elements
-    Remove All Elements If Exist    ${RENDERED_SERVICE_PATHS_URI}
-    Remove All Elements If Exist    ${SERVICE_FUNCTION_PATHS_URI}
-    Remove All Elements If Exist    ${SERVICE_CHAINS_URI}
-    Remove All Elements If Exist    ${SERVICE_FORWARDERS_URI}
-    Remove All Elements If Exist    ${SERVICE_FUNCTIONS_URI}
-    Wait Until Keyword Succeeds    60s    2s    Check Service Function Types Removed    ${SF_NAMES}
-
-Create All Elements
-    [Documentation]    Delete all provisioned elements
-    Add Elements To URI From File    ${SERVICE_FUNCTIONS_URI}    ${SERVICE_FUNCTIONS_FILE}
-    Wait Until Keyword Succeeds    60s    2s    Check Service Function Types Added    ${SF_NAMES}
-    Add Elements To URI From File    ${SERVICE_FORWARDERS_URI}    ${SERVICE_FORWARDERS_FILE}
-    Add Elements To URI From File    ${SERVICE_CHAINS_URI}    ${SERVICE_CHAINS_FILE}
-    Add Elements To URI From File    ${SERVICE_FUNCTION_PATHS_URI}    ${SERVICE_FUNCTION_PATHS_FILE}
+    Utils.Remove All Elements If Exist    ${SERVICE_FUNCTION_PATHS_URI}
+    Utils.Remove All Elements If Exist    ${SERVICE_CHAINS_URI}
+    Utils.Remove All Elements If Exist    ${SERVICE_FORWARDERS_URI}
+    Utils.Remove All Elements If Exist    ${SERVICE_FUNCTIONS_URI}
+    BuiltIn.Wait Until Keyword Succeeds    60s    2s    SfcKeywords.Check Service Function Types Removed    ${SF_NAMES}
+    RequestsLibrary.Delete All Sessions
diff --git a/csit/suites/sfc/Full_Deploy/016__sfc_symmetric_RSP.robot b/csit/suites/sfc/Full_Deploy/016__sfc_symmetric_RSP.robot
deleted file mode 100644 (file)
index 99a1809..0000000
+++ /dev/null
@@ -1,90 +0,0 @@
-*** Settings ***
-Documentation     Test suite for symmetric RSP using bidirectional field of SF type.
-Suite Setup       Init Suite
-Suite Teardown    End Suite
-Library           SSHLibrary
-Library           Collections
-Library           OperatingSystem
-Library           RequestsLibrary
-Library           HttpLibrary.HTTP
-Resource          ../../../libraries/SFC/SfcKeywords.robot
-Resource          ../../../variables/sfc/Variables.robot
-Resource          ../../../libraries/Utils.robot
-Resource          ../../../libraries/TemplatedRequests.robot
-
-*** Variables ***
-${VERSION_DIR}    master
-${SUITE_DIR}      ${CURDIR}/../../../variables/sfc/${VERSION_DIR}/symmetricRSP
-${SERVICE_NODES_FILE}    ${SUITE_DIR}/service_nodes.json
-${SERVICE_FUNCTION_TYPES_FILE}    ${SUITE_DIR}/service_function_types.json
-${SERVICE_FUNCTIONS_FILE}    ${SUITE_DIR}/service_functions.json
-${SERVICE_FORWARDERS_FILE}    ${SUITE_DIR}/service_function_forwarders.json
-${SERVICE_CHAINS_FILE}    ${SUITE_DIR}/service_function_chains.json
-${SERVICE_FUNCTION_PATHS_FILE}    ${SUITE_DIR}/service_function_paths.json
-${CREATE_RSP1_INPUT}    {"input":{"parent-service-function-path":"SFP1","name":"RSP1"}}
-${CREATE_RSP2_INPUT}    {"input":{"parent-service-function-path":"SFP2","name":"RSP2"}}
-${CREATE_RSP3_INPUT}    {"input":{"parent-service-function-path":"SFP3","name":"RSP3"}}
-${DELETE_RSP1_INPUT}    {"input":{"name":"RSP1"}}
-${DELETE_RSP2_INPUT}    {"input":{"name":"RSP2"}}
-${DELETE_RSP3_INPUT}    {"input":{"name":"RSP3"}}
-@{SF_NAMES}       "name":"firewall-1"    "name":"dpi-1"    "name":"dpi-2"
-
-*** Test Cases ***
-Create symmetric RSP with bidirectional flag set true in one SF type
-    Post Elements To URI    ${OPERATIONS_CREATE_RSP_URI}    ${CREATE_RSP1_INPUT}
-    ${resp}    RequestsLibrary.Get Request    session    ${OPERATIONAL_RSPS_URI}
-    Should Be Equal As Strings    ${resp.status_code}    200
-    ${elements}=    Create List    RSP1    RSP1-Reverse
-    Check For Elements At URI    ${OPERATIONAL_RSPS_URI}    ${elements}
-    [Teardown]    Post Elements To URI    ${OPERATIONS_DELETE_RSP_URI}    ${DELETE_RSP1_INPUT}
-
-Create non-symmetric RSP with bidirectional flag set false or not set in all SFs
-    Post Elements To URI    ${OPERATIONS_CREATE_RSP_URI}    ${CREATE_RSP2_INPUT}
-    ${resp}    RequestsLibrary.Get Request    session    ${OPERATIONAL_RSPS_URI}
-    Should Be Equal As Strings    ${resp.status_code}    200
-    Log    ${resp.content}
-    Should Contain    ${resp.content}    RSP2
-    Should Not Contain    ${resp.content}    RSP2-Reverse
-    [Teardown]    Post Elements To URI    ${OPERATIONS_DELETE_RSP_URI}    ${DELETE_RSP2_INPUT}
-
-Create non-symmetric RSP overriding bidirectional flag with SFP symmetric flag
-    Post Elements To URI    ${OPERATIONS_CREATE_RSP_URI}    ${CREATE_RSP3_INPUT}
-    # Note that SFP3 uses SFC1, which contains a dpi-bidirectional, but it's
-    # overriden with symmetric flag in SFP set to false
-    ${resp}    RequestsLibrary.Get Request    session    ${OPERATIONAL_RSPS_URI}
-    Should Be Equal As Strings    ${resp.status_code}    200
-    Log    ${resp.content}
-    Should Contain    ${resp.content}    RSP3
-    Should Not Contain    ${resp.content}    RSP3-Reverse
-    [Teardown]    Post Elements To URI    ${OPERATIONS_DELETE_RSP_URI}    ${DELETE_RSP3_INPUT}
-
-*** Keywords ***
-Init Suite
-    [Documentation]    Create session and initialize ODL version specific variables
-    Create Session    session    http://${ODL_SYSTEM_IP}:${RESTCONFPORT}    auth=${AUTH}    headers=${HEADERS}
-    log    ${ODL_STREAM}
-    Basic Environment Setup
-
-Basic Environment Setup
-    [Documentation]    Provision all elements except RSPs
-    Clean Datastore
-    Add Elements To URI From File    ${SERVICE_FORWARDERS_URI}    ${SERVICE_FORWARDERS_FILE}
-    Add Elements To URI From File    ${SERVICE_NODES_URI}    ${SERVICE_NODES_FILE}
-    Add Elements To URI From File    ${SERVICE_FUNCTION_TYPES_URI}    ${SERVICE_FUNCTION_TYPES_FILE}
-    Add Elements To URI From File    ${SERVICE_FUNCTIONS_URI}    ${SERVICE_FUNCTIONS_FILE}
-    Wait Until Keyword Succeeds    60s    2s    Check Service Function Types Added    ${SF_NAMES}
-    Add Elements To URI From File    ${SERVICE_CHAINS_URI}    ${SERVICE_CHAINS_FILE}
-    Add Elements To URI From File    ${SERVICE_FUNCTION_PATHS_URI}    ${SERVICE_FUNCTION_PATHS_FILE}
-
-End Suite
-    Clean Datastore
-    Delete All Sessions
-
-Clean Datastore
-    [Documentation]    Remove All Elements
-    Remove All Elements If Exist    ${SERVICE_FUNCTIONS_URI}
-    Wait Until Keyword Succeeds    60s    2s    Check Service Function Types Removed    ${SF_NAMES}
-    Remove All Elements If Exist    ${SERVICE_FORWARDERS_URI}
-    Remove All Elements If Exist    ${SERVICE_NODES_URI}
-    Remove All Elements If Exist    ${SERVICE_CHAINS_URI}
-    Remove All Elements If Exist    ${SERVICE_FUNCTION_PATHS_URI}
index b22ad64ecc843b08894d96830077f4e457f34a69..a2da4c1a8006ff21450121390d126a4fb5387a97 100644 (file)
@@ -21,8 +21,7 @@ Basic Environment Setup Tests
     BuiltIn.Wait Until Keyword Succeeds    60s    2s    SfcKeywords.Check Service Function Types Added    ${SERVICE_FUNCTION_NAMES}
     Utils.Add Elements To URI From File    ${SERVICE_CHAINS_URI}    ${SERVICE_CHAINS_FILE}
     # Creates SFPs: SFC1-100, SFC1-200, SFC1-300, SFC2-100, and SFC2-200
-    ${created_sfps} =    BuiltIn.Create List    "SFC1-100"    "SFC1-200"    "SFC1-300"    "SFC2-100"    "SFC2-200"
-    SfcKeywords.Create Sfp And Wait For Rsp Creation    ${SERVICE_FUNCTION_PATHS_FILE}    ${created_sfps}
+    SfcKeywords.Create Sfp And Wait For Rsp Creation    ${SERVICE_FUNCTION_PATHS_FILE}
 
 Get Rendered Service Path By Name
     [Documentation]    Get The Rendered Service Path Created in "Basic Environment Setup Tests" By Name Via RESTConf APIs
@@ -67,8 +66,7 @@ Generate RSPs with Random Schedule Algorithm type
     Utils.Add Elements To URI From File    ${SERVICE_RANDOM_SCHED_TYPE_URI}    ${SERVICE_RANDOM_SCHED_TYPE_FILE}
     SfcKeywords.Delete All Sfps And Wait For Rsps Deletion
     # Create the SFPs which will create the RSPs with the Random scheduler
-    ${created_sfps} =    BuiltIn.Create List    "SFC1-100"    "SFC1-200"    "SFC1-300"    "SFC2-100"    "SFC2-200"
-    SfcKeywords.Create Sfp And Wait For Rsp Creation    ${SERVICE_FUNCTION_PATHS_FILE}    ${created_sfps}
+    SfcKeywords.Create Sfp And Wait For Rsp Creation    ${SERVICE_FUNCTION_PATHS_FILE}
     ${sfp_name} =    BuiltIn.Set Variable    SFC1-100
     ${rsp_name} =    SfcKeywords.Get Rendered Service Path Name    ${sfp_name}
     ${elements} =    BuiltIn.Create List    "hop-number":0    "service-index":255    "service-function-name":"dpi
@@ -85,8 +83,7 @@ Generate RSPs with Round Robin Schedule Algorithm type
     Utils.Add Elements To URI From File    ${SERVICE_ROUNDROBIN_SCHED_TYPE_URI}    ${SERVICE_ROUNDROBIN_SCHED_TYPE_FILE}
     SfcKeywords.Delete All Sfps And Wait For Rsps Deletion
     # Create the SFPs which will create the RSPs with the Random scheduler
-    ${created_sfps} =    BuiltIn.Create List    "SFC1-100"    "SFC1-200"    "SFC1-300"    "SFC2-100"    "SFC2-200"
-    SfcKeywords.Create Sfp And Wait For Rsp Creation    ${SERVICE_FUNCTION_PATHS_FILE}    ${created_sfps}
+    SfcKeywords.Create Sfp And Wait For Rsp Creation    ${SERVICE_FUNCTION_PATHS_FILE}
     ${rsp1_name} =    SfcKeywords.Get Rendered Service Path Name    SFC1-100
     ${rsp2_name} =    SfcKeywords.Get Rendered Service Path Name    SFC1-200
     ${rsp3_name} =    SfcKeywords.Get Rendered Service Path Name    SFC1-300
@@ -132,8 +129,7 @@ Generate RSPs with Shortest Path Schedule Algorithm type
     Utils.Add Elements To URI From File    ${SERVICE_SHORTESTPATH_SCHED_TYPE_URI}    ${SERVICE_SHORTESTPATH_SCHED_TYPE_FILE}
     SfcKeywords.Delete All Sfps And Wait For Rsps Deletion
     # Create the SFPs which will create the RSPs with the Random scheduler
-    ${created_sfps} =    BuiltIn.Create List    "SFC1-100"    "SFC1-200"    "SFC1-300"    "SFC2-100"    "SFC2-200"
-    SfcKeywords.Create Sfp And Wait For Rsp Creation    ${SERVICE_FUNCTION_PATHS_FILE}    ${created_sfps}
+    SfcKeywords.Create Sfp And Wait For Rsp Creation    ${SERVICE_FUNCTION_PATHS_FILE}
     ${rsp1_name} =    SfcKeywords.Get Rendered Service Path Name    SFC1-100
     ${rsp2_name} =    SfcKeywords.Get Rendered Service Path Name    SFC1-200
     ${rsp3_name} =    SfcKeywords.Get Rendered Service Path Name    SFC1-300
index ca91fd3e8c93dc74ee37f70d3e6590715cf970be..1f688b299de57def55a5346a81be064a1eba7a5e 100644 (file)
@@ -2,7 +2,6 @@
 # Generic Service Chains and Function URIs
 ${REST_CONFIG}    /restconf/config
 ${REST_OPER}      /restconf/operational
-${REST_RPC}       /restconf/operations
 ${SERVICE_FUNCTION_TYPES_URI}    ${REST_CONFIG}/service-function-type:service-function-types/
 ${SERVICE_FUNCTIONS_URI}    ${REST_CONFIG}/service-function:service-functions/
 ${SERVICE_FUNCTION_URI}    ${REST_CONFIG}/service-function:service-functions/service-function/
@@ -25,7 +24,4 @@ ${SERVICE_SHORTESTPATH_SCHED_TYPE_URI}    ${SERVICE_SCHED_TYPE_URI_BASE}shortest
 ${SERVICE_METADATA_URI}    ${REST_CONFIG}/service-function-path-metadata:service-function-metadata/
 ${OPERATIONAL_RSPS_URI}    ${REST_OPER}/rendered-service-path:rendered-service-paths/
 ${OPERATIONAL_RSP_URI}    ${OPERATIONAL_RSPS_URI}rendered-service-path/
-${OPERATIONS_CREATE_RSP_URI}    ${REST_RPC}/rendered-service-path:create-rendered-path/
-${OPERATIONS_DELETE_RSP_URI}    ${REST_RPC}/rendered-service-path:delete-rendered-path/
-${RENDERED_SERVICE_PATHS_URI}    ${REST_CONFIG}/rendered-service-path:rendered-service-paths/
 ${OVSDB_TOPOLOGY_URI}    ${REST_OPER}/network-topology:network-topology/topology/ovsdb:1
index 3fb7a35ad312811cc1e4403fc3e848f649e0edab..c58a9e64e1fb9297cc6235405088a4c0de567cb3 100644 (file)
@@ -9,7 +9,7 @@
             {
               "rule-name": "ACE1",
               "actions": {
-                "service-function-acl:rendered-service-path": "RSP1"
+                "service-function-acl:rendered-service-path": "$RSP1"
               },
               "matches": {
                 "destination-ipv4-network": "192.168.2.0/24",
@@ -34,7 +34,7 @@
             {
               "rule-name": "ACE2",
               "actions": {
-                "service-function-acl:rendered-service-path": "RSP1-Reverse"
+                "service-function-acl:rendered-service-path": "$RSP1_Reverse"
               },
               "matches": {
                 "destination-ipv4-network": "192.168.2.0/24",