Test cases for GBP-SFC integration demo 08/29008/27
authorTomas Cechvala <tcechval@cisco.com>
Sun, 6 Dec 2015 17:47:36 +0000 (18:47 +0100)
committerGerrit Code Review <gerrit@opendaylight.org>
Thu, 10 Dec 2015 00:10:04 +0000 (00:10 +0000)
Asymmetric demo scenario.

Change-Id: Ib92bc83ee254a8fe0c64617dbc2a0e8baa720322
Signed-off-by: Tomas Cechvala <tcechval@cisco.com>
69 files changed:
csit/suites/groupbasedpolicy/GBPSFC/6-node/Connections.robot [new file with mode: 0644]
csit/suites/groupbasedpolicy/GBPSFC/6-node/GBPSFC_6node.robot [new file with mode: 0644]
csit/suites/groupbasedpolicy/GBPSFC/6-node/Variables.robot [new file with mode: 0644]
csit/suites/groupbasedpolicy/GBPSFC/6-node/__init__.robot [new file with mode: 0644]
csit/suites/groupbasedpolicy/GBPSFC/6-node/demo-asymmetric-chain/000_setup.robot [new file with mode: 0644]
csit/suites/groupbasedpolicy/GBPSFC/6-node/demo-asymmetric-chain/005_wait_for_connections.robot [new file with mode: 0644]
csit/suites/groupbasedpolicy/GBPSFC/6-node/demo-asymmetric-chain/010_set_odl.robot
csit/suites/groupbasedpolicy/GBPSFC/6-node/demo-asymmetric-chain/015_wait_for_flows.robot [new file with mode: 0644]
csit/suites/groupbasedpolicy/GBPSFC/6-node/demo-asymmetric-chain/031_track_icmp_h35_2_h36_2.robot [new file with mode: 0644]
csit/suites/groupbasedpolicy/GBPSFC/6-node/demo-asymmetric-chain/032_track_icmp_h35_2_h35_3.robot [new file with mode: 0644]
csit/suites/groupbasedpolicy/GBPSFC/6-node/demo-asymmetric-chain/033_track_icmp_h35_4_h36_4.robot [new file with mode: 0644]
csit/suites/groupbasedpolicy/GBPSFC/6-node/demo-asymmetric-chain/034_track_icmp_h36_5_h35_2.robot [new file with mode: 0644]
csit/suites/groupbasedpolicy/GBPSFC/6-node/demo-asymmetric-chain/035_track_curl_h35_2_h36_2.robot [new file with mode: 0644]
csit/suites/groupbasedpolicy/GBPSFC/6-node/demo-asymmetric-chain/036_track_curl_h35_3_h36_4.robot [new file with mode: 0644]
csit/suites/groupbasedpolicy/GBPSFC/6-node/demo-asymmetric-chain/998_clean_odl.robot
csit/suites/groupbasedpolicy/GBPSFC/6-node/demo-asymmetric-chain/999_teardown.robot [new file with mode: 0644]
csit/suites/groupbasedpolicy/GBPSFC/6-node/demo-asymmetric-chain/init_scripts/infrastructure_config.py [new file with mode: 0644]
csit/suites/groupbasedpolicy/GBPSFC/6-node/demo-asymmetric-chain/init_scripts/sf-flows.sh [new file with mode: 0644]
csit/suites/groupbasedpolicy/GBPSFC/6-node/demo-symmetric-chain/010_set_odl.robot [deleted file]
csit/suites/groupbasedpolicy/GBPSFC/6-node/demo-symmetric-chain/998_clean_odl.robot [deleted file]
csit/testplans/groupbasedpolicy-6node.txt [new file with mode: 0644]
csit/variables/gbp/6node/demo-asymmetric-chain/lithium/tenants.json [moved from csit/variables/gbp/demo-asymmetric-chain/lithium/tenants.json with 100% similarity]
csit/variables/gbp/6node/demo-asymmetric-chain/lithium/vethl-h35_2.json [moved from csit/variables/gbp/demo-asymmetric-chain/lithium/vethl-h35_2.json with 100% similarity]
csit/variables/gbp/6node/demo-asymmetric-chain/lithium/vethl-h35_3.json [moved from csit/variables/gbp/demo-asymmetric-chain/lithium/vethl-h35_3.json with 100% similarity]
csit/variables/gbp/6node/demo-asymmetric-chain/lithium/vethl-h35_4.json [moved from csit/variables/gbp/demo-asymmetric-chain/lithium/vethl-h35_4.json with 100% similarity]
csit/variables/gbp/6node/demo-asymmetric-chain/lithium/vethl-h35_5.json [moved from csit/variables/gbp/demo-asymmetric-chain/lithium/vethl-h35_5.json with 100% similarity]
csit/variables/gbp/6node/demo-asymmetric-chain/lithium/vethl-h36_2.json [moved from csit/variables/gbp/demo-asymmetric-chain/lithium/vethl-h36_2.json with 100% similarity]
csit/variables/gbp/6node/demo-asymmetric-chain/lithium/vethl-h36_3.json [moved from csit/variables/gbp/demo-asymmetric-chain/lithium/vethl-h36_3.json with 100% similarity]
csit/variables/gbp/6node/demo-asymmetric-chain/lithium/vethl-h36_4.json [moved from csit/variables/gbp/demo-asymmetric-chain/lithium/vethl-h36_4.json with 100% similarity]
csit/variables/gbp/6node/demo-asymmetric-chain/lithium/vethl-h36_5.json [moved from csit/variables/gbp/demo-asymmetric-chain/lithium/vethl-h36_5.json with 100% similarity]
csit/variables/gbp/6node/demo-asymmetric-chain/master/tenants.json [new file with mode: 0644]
csit/variables/gbp/6node/demo-asymmetric-chain/master/vethl-h35_2.json [moved from csit/variables/gbp/demo-asymmetric-chain/master/vethl-h35_2.json with 100% similarity]
csit/variables/gbp/6node/demo-asymmetric-chain/master/vethl-h35_3.json [moved from csit/variables/gbp/demo-asymmetric-chain/master/vethl-h35_3.json with 100% similarity]
csit/variables/gbp/6node/demo-asymmetric-chain/master/vethl-h35_4.json [moved from csit/variables/gbp/demo-asymmetric-chain/master/vethl-h35_4.json with 100% similarity]
csit/variables/gbp/6node/demo-asymmetric-chain/master/vethl-h35_5.json [moved from csit/variables/gbp/demo-asymmetric-chain/master/vethl-h35_5.json with 100% similarity]
csit/variables/gbp/6node/demo-asymmetric-chain/master/vethl-h36_2.json [moved from csit/variables/gbp/demo-asymmetric-chain/master/vethl-h36_2.json with 100% similarity]
csit/variables/gbp/6node/demo-asymmetric-chain/master/vethl-h36_3.json [moved from csit/variables/gbp/demo-asymmetric-chain/master/vethl-h36_3.json with 100% similarity]
csit/variables/gbp/6node/demo-asymmetric-chain/master/vethl-h36_4.json [moved from csit/variables/gbp/demo-asymmetric-chain/master/vethl-h36_4.json with 100% similarity]
csit/variables/gbp/6node/demo-asymmetric-chain/master/vethl-h36_5.json [moved from csit/variables/gbp/demo-asymmetric-chain/master/vethl-h36_5.json with 100% similarity]
csit/variables/gbp/6node/demo-asymmetric-chain/service_function_chains.json [moved from csit/variables/gbp/demo-asymmetric-chain/service_function_chains.json with 100% similarity]
csit/variables/gbp/6node/demo-asymmetric-chain/service_function_paths.json [moved from csit/variables/gbp/demo-asymmetric-chain/service_function_paths.json with 100% similarity]
csit/variables/gbp/6node/demo-symmetric-chain/lithium/tenants.json [moved from csit/variables/gbp/demo-symmetric-chain/lithium/tenants.json with 100% similarity]
csit/variables/gbp/6node/demo-symmetric-chain/lithium/vethl-h35_2.json [moved from csit/variables/gbp/demo-symmetric-chain/lithium/vethl-h35_2.json with 100% similarity]
csit/variables/gbp/6node/demo-symmetric-chain/lithium/vethl-h35_3.json [moved from csit/variables/gbp/demo-symmetric-chain/lithium/vethl-h35_3.json with 100% similarity]
csit/variables/gbp/6node/demo-symmetric-chain/lithium/vethl-h35_4.json [moved from csit/variables/gbp/demo-symmetric-chain/lithium/vethl-h35_4.json with 100% similarity]
csit/variables/gbp/6node/demo-symmetric-chain/lithium/vethl-h35_5.json [moved from csit/variables/gbp/demo-symmetric-chain/lithium/vethl-h35_5.json with 100% similarity]
csit/variables/gbp/6node/demo-symmetric-chain/lithium/vethl-h36_2.json [moved from csit/variables/gbp/demo-symmetric-chain/lithium/vethl-h36_2.json with 100% similarity]
csit/variables/gbp/6node/demo-symmetric-chain/lithium/vethl-h36_3.json [moved from csit/variables/gbp/demo-symmetric-chain/lithium/vethl-h36_3.json with 100% similarity]
csit/variables/gbp/6node/demo-symmetric-chain/lithium/vethl-h36_4.json [moved from csit/variables/gbp/demo-symmetric-chain/lithium/vethl-h36_4.json with 100% similarity]
csit/variables/gbp/6node/demo-symmetric-chain/lithium/vethl-h36_5.json [moved from csit/variables/gbp/demo-symmetric-chain/lithium/vethl-h36_5.json with 100% similarity]
csit/variables/gbp/6node/demo-symmetric-chain/master/tenants.json [moved from csit/variables/gbp/demo-symmetric-chain/master/tenants.json with 100% similarity]
csit/variables/gbp/6node/demo-symmetric-chain/master/vethl-h35_2.json [moved from csit/variables/gbp/demo-symmetric-chain/master/vethl-h35_2.json with 100% similarity]
csit/variables/gbp/6node/demo-symmetric-chain/master/vethl-h35_3.json [moved from csit/variables/gbp/demo-symmetric-chain/master/vethl-h35_3.json with 100% similarity]
csit/variables/gbp/6node/demo-symmetric-chain/master/vethl-h35_4.json [moved from csit/variables/gbp/demo-symmetric-chain/master/vethl-h35_4.json with 100% similarity]
csit/variables/gbp/6node/demo-symmetric-chain/master/vethl-h35_5.json [moved from csit/variables/gbp/demo-symmetric-chain/master/vethl-h35_5.json with 100% similarity]
csit/variables/gbp/6node/demo-symmetric-chain/master/vethl-h36_2.json [moved from csit/variables/gbp/demo-symmetric-chain/master/vethl-h36_2.json with 100% similarity]
csit/variables/gbp/6node/demo-symmetric-chain/master/vethl-h36_3.json [moved from csit/variables/gbp/demo-symmetric-chain/master/vethl-h36_3.json with 100% similarity]
csit/variables/gbp/6node/demo-symmetric-chain/master/vethl-h36_4.json [moved from csit/variables/gbp/demo-symmetric-chain/master/vethl-h36_4.json with 100% similarity]
csit/variables/gbp/6node/demo-symmetric-chain/master/vethl-h36_5.json [moved from csit/variables/gbp/demo-symmetric-chain/master/vethl-h36_5.json with 100% similarity]
csit/variables/gbp/6node/demo-symmetric-chain/service_function_chains.json [moved from csit/variables/gbp/demo-symmetric-chain/service_function_chains.json with 100% similarity]
csit/variables/gbp/6node/demo-symmetric-chain/service_function_paths.json [moved from csit/variables/gbp/demo-symmetric-chain/service_function_paths.json with 100% similarity]
csit/variables/gbp/6node/lithium/service_function_forwarders.json [moved from csit/variables/gbp/demo-asymmetric-chain/service_function_forwarders.json with 100% similarity]
csit/variables/gbp/6node/master/service_function_forwarders.json [new file with mode: 0644]
csit/variables/gbp/6node/service_functions.json [moved from csit/variables/gbp/demo-asymmetric-chain/service_functions.json with 100% similarity]
csit/variables/gbp/6node/tunnels.json [moved from csit/variables/gbp/demo-asymmetric-chain/tunnels.json with 100% similarity]
csit/variables/gbp/demo-asymmetric-chain/master/tenants.json [deleted file]
csit/variables/gbp/demo-symmetric-chain/service_function_forwarders.json [deleted file]
csit/variables/gbp/demo-symmetric-chain/service_functions.json [deleted file]
csit/variables/gbp/demo-symmetric-chain/tunnels.json [deleted file]

diff --git a/csit/suites/groupbasedpolicy/GBPSFC/6-node/Connections.robot b/csit/suites/groupbasedpolicy/GBPSFC/6-node/Connections.robot
new file mode 100644 (file)
index 0000000..d895cef
--- /dev/null
@@ -0,0 +1,38 @@
+*** Settings ***
+Library           SSHLibrary
+Resource          ../../../../libraries/Utils.robot
+Resource          ../../../../libraries/GBP/ConnUtils.robot
+Variables         ../../../../variables/Variables.py
+Resource          Variables.robot
+
+*** Keywords ***
+
+Start Connections
+    [Documentation]    Establishes connections to remote VMs.
+    SSHLibrary.Open Connection    ${GBPSFC1}    alias=GPSFC1_CONNECTION
+    Utils.Flexible Mininet Login
+    SSHLibrary.Open Connection    ${GBPSFC2}    alias=GPSFC2_CONNECTION
+    Utils.Flexible Mininet Login
+    SSHLibrary.Open Connection    ${GBPSFC3}    alias=GPSFC3_CONNECTION
+    Utils.Flexible Mininet Login
+    SSHLibrary.Open Connection    ${GBPSFC4}    alias=GPSFC4_CONNECTION
+    Utils.Flexible Mininet Login
+    SSHLibrary.Open Connection    ${GBPSFC5}    alias=GPSFC5_CONNECTION
+    Utils.Flexible Mininet Login
+    SSHLibrary.Open Connection    ${GBPSFC6}    alias=GPSFC6_CONNECTION
+    Utils.Flexible Mininet Login
+
+Close Connections
+    [Documentation]    Closes connections to remote VMs.
+    Switch Connection    GPSFC1_CONNECTION
+    SSHLibrary.Close Connection
+    Switch Connection    GPSFC2_CONNECTION
+    SSHLibrary.Close Connection
+    Switch Connection    GPSFC3_CONNECTION
+    SSHLibrary.Close Connection
+    Switch Connection    GPSFC4_CONNECTION
+    SSHLibrary.Close Connection
+    Switch Connection    GPSFC5_CONNECTION
+    SSHLibrary.Close Connection
+    Switch Connection    GPSFC6_CONNECTION
+    SSHLibrary.Close Connection
diff --git a/csit/suites/groupbasedpolicy/GBPSFC/6-node/GBPSFC_6node.robot b/csit/suites/groupbasedpolicy/GBPSFC/6-node/GBPSFC_6node.robot
new file mode 100644 (file)
index 0000000..1d4ed2d
--- /dev/null
@@ -0,0 +1,57 @@
+*** Settings ***
+Library           SSHLibrary
+Resource          Variables.robot
+Resource          ../../../../libraries/Utils.robot
+Resource          ../../../../libraries/GBP/ConnUtils.robot
+Variables         ../../../../variables/Variables.py
+
+*** Keywords ***
+
+Setup Node
+    [Documentation]    Configures underlying infrastructure composed of Docker containers and OVS switches on remote VM.
+    ...    Python and Bash scripts are used.
+    [Arguments]    ${GBPSFC}    ${sw_index}    ${suite_dir}    ${timeout}=10s
+    ConnUtils.Connect and Login    ${GBPSFC}    timeout=${timeout}
+    SSHLibrary.Put File    ${suite_dir}/*    ${VM_HOME_FOLDER}${/}${VM_SCRIPTS_FOLDER}/    mode=0755
+    ${stdout}    ${stderr}    ${rc}    Execute in VE    python ${VM_HOME_FOLDER}${/}${VM_SCRIPTS_FOLDER}/infrastructure_launch.py ${ODL} ${sw_index}
+    ...    timeout=${timeout}
+    Should Be Equal As Numbers    ${rc}    0
+    ${stderr}    Set Variable
+    # Flows for GBPSFC3 and GBPSFC5 have to be written manually.
+    # GBPSFC2 is SFF for GBPSFC3 and GBPSFC4 is SFF for GBPSFC5
+    Run Keyword If    "${GBPSFC}" == "${GBPSFC3}"
+    ...    Write SF Flows    ${GBPSFC2}    ${stderr}
+    ...    ELSE IF    "${GBPSFC}" == "${GBPSFC5}"
+    ...    Write SF Flows    ${GBPSFC4}    ${stderr}
+    Should Be Empty    ${stderr}
+    SSHLibrary.Close Connection
+
+Write SF Flows
+    [Documentation]    Writes flows to SF node. SFF for given SF has to be specified in arguments.
+    [Arguments]    ${SFF}    ${stderr}
+    ${stderr}    SSHLibrary.Execute Command    ${VM_HOME_FOLDER}${/}${VM_SCRIPTS_FOLDER}/sf-flows.sh ${SFF}
+    ...    return_stderr=True    return_stdout=False
+
+Teardown Node
+    [Documentation]    Clears underlying infrastructure composed of Docker containers and OVS switches from remote VM.
+    ...    Python and Bash scripts are used.
+    [Arguments]    ${GBPSFC}    ${suite_dir}    ${timeout}=3s
+    ConnUtils.Connect and Login    ${GBPSFC}    timeout=${timeout}
+    ${stderr}    SSHLibrary.Execute Command    rm ${VM_HOME_FOLDER}${/}${VM_SCRIPTS_FOLDER}/infrastructure_config.py
+    ...    return_stderr=True    return_stdout=False
+    Should Be Empty    ${stderr}
+    ${stderr}    SSHLibrary.Execute Command    rm ${VM_HOME_FOLDER}${/}${VM_SCRIPTS_FOLDER}/sf-flows.sh
+    ...    return_stderr=True    return_stdout=False
+    Should Be Empty    ${stderr}
+    ${stderr}    SSHLibrary.Execute Command    ${VM_HOME_FOLDER}${/}${VM_SCRIPTS_FOLDER}/clean-demo.sh
+    ...    return_stderr=True    return_stdout=False
+    Should Be Empty    ${stderr}
+    SSHLibrary.Close Connection
+
+Setup Nodes
+    [Arguments]    ${GBPSFCs}    ${init_scripts_dir}
+    ${sw_index}    Set Variable    0
+    :FOR    ${GBPSFC}    IN    @{GBPSFCs}
+    \    Setup Node    ${GBPSFC}    ${sw_index}    ${init_scripts_dir}    timeout=10s
+    \    ${sw_index}    Evaluate    ${sw_index} + 1
+
diff --git a/csit/suites/groupbasedpolicy/GBPSFC/6-node/Variables.robot b/csit/suites/groupbasedpolicy/GBPSFC/6-node/Variables.robot
new file mode 100644 (file)
index 0000000..fff9bf4
--- /dev/null
@@ -0,0 +1,76 @@
+*** Settings ***
+Documentation    Global variables for GBPSFC 6node topology. Some variables are release specific and their value depend on
+...    ODL_VERSION variable which contains release name and is defined in Jenkins job. Keywords for setting release specific
+...    data are located in this file.
+Variables         ../../../../variables/Variables.py
+
+*** Variables ***
+${VM_HOME_FOLDER} =  ${WORKSPACE}
+${VM_SCRIPTS_FOLDER} =  scripts
+${ODL} =    ${ODL_SYSTEM_IP}
+${GBPSFC1} =    ${TOOLS_SYSTEM_IP}
+${GBPSFC2} =    ${TOOLS_SYSTEM_2_IP}
+${GBPSFC3} =    ${TOOLS_SYSTEM_3_IP}
+${GBPSFC4} =    ${TOOLS_SYSTEM_4_IP}
+${GBPSFC5} =    ${TOOLS_SYSTEM_5_IP}
+${GBPSFC6} =    ${TOOLS_SYSTEM_6_IP}
+@{GBPSFCs} =    ${GBPSFC1}    ${GBPSFC2}    ${GBPSFC3}
+...             ${GBPSFC4}    ${GBPSFC5}    ${GBPSFC6}
+${OF_OVERLAY_CONFIG_PATH}  /restconf/config/ofoverlay:of-overlay-config
+${TOPOLOGY_PATH}           ${CONFIG_TOPO_API}/topology/ovsdb:1
+${SF_PATH}                 /restconf/config/service-function:service-functions
+${SF_FILE}                 ${CURDIR}/../../../../variables/gbp/6node/service_functions.json
+${SFF_PATH}                /restconf/config/service-function-forwarder:service-function-forwarders
+${SFF_FILE}                ${CURDIR}/../../../../variables/gbp/6node/service_function_forwarders.json
+${SFC_PATH}                /restconf/config/service-function-chain:service-function-chains
+${TUNNELS_PATH}            ${CONFIG_NODES_API}
+${TUNNELS_FILE}            ${CURDIR}/../../../../variables/gbp/6node/tunnels.json
+${SFC_ASYMM_FILE}          ${CURDIR}/../../../../variables/gbp/6node/demo-asymmetric-chain/service_function_chains.json
+${SFC_SYMM_FILE}           ${CURDIR}/../../../../variables/gbp/6node/demo-symmetric-chain/service_function_chains.json
+${SFP_PATH}                /restconf/config/service-function-path:service-function-paths
+${SFP_ASYMM_FILE}          ${CURDIR}/../../../../variables/gbp/6node/demo-asymmetric-chain/service_function_paths.json
+${SFP_SYMM_FILE}           ${CURDIR}/../../../../variables/gbp/6node/demo-symmetric-chain/service_function_paths.json
+${ENDPOINT_REG_PATH}       ${GBP_REGEP_API}
+${ENDPOINT_UNREG_PATH}     ${GBP_UNREGEP_API}
+${ENDPOINTS_OPER_PATH}     /restconf/operational/endpoint:endpoints
+
+*** Keywords ***
+Set Test Variables
+    [Documentation]  Sets variables used in 6node test cases.
+    [Arguments]   ${client_ip}    ${client_name}    ${server_ip}    ${server_name}
+    ...    ${ether_type}    ${proto}    ${service_port}=${EMPTY}    ${vxlan_port}=${EMPTY}    ${vxlan_gpe_port}=${EMPTY}
+    Set Global Variable    ${CLIENT_IP}       ${client_ip}
+    Set Global Variable    ${CLIENT_NAME}     ${client_name}
+    Set Global Variable    ${SERVER_IP}       ${server_ip}
+    Set Global Variable    ${SERVER_NAME}     ${server_name}
+    Set Global Variable    ${SERVICE_PORT}    ${service_port}
+    Set Global Variable    ${ETHER_TYPE}      ${ether_type}
+    Set Global Variable    ${PROTO}           ${proto}
+    Set Global Variable    ${VXLAN_PORT}      ${vxlan_port}
+    Set Global Variable    ${VXLAN_GPE_PORT}  ${vxlan_gpe_port}
+
+Set ODL Variables
+    [Documentation]    Initialize ODL version specific variables
+    log    ${ODL_VERSION}
+    Run Keyword If    "${ODL_VERSION}" == "stable-lithium" or "${ODL_VERSION}" == "stable/lithium"    Set ODL Variables Lithium
+    ...    ELSE    Set ODL Variables Master
+
+Set ODL Variables Master
+    [Documentation]    Sets variables specific to latest(master) version
+    Set Global Variable    ${GBP_TENANT_ID}        tenant-red
+    Set Global Variable    ${TENANT_PATH}          ${GBP_TENANTS_API}/tenant/${GBP_TENANT_ID}
+    Set Global Variable    ${TENANT_ASYMM_FILE}    ${CURDIR}/../../../../variables/gbp/6node/demo-asymmetric-chain/master/tenants.json
+    Set Global Variable    ${TENANT_SYMM_FILE}     ${CURDIR}/../../../../variables/gbp/6node/demo-symmetric-chain/master/tenants.json
+    Set Global Variable    ${SFF_FILE}             ${CURDIR}/../../../../variables/gbp/6node/master/service_function_forwarders.json
+    Set Global Variable    ${ENDPOINTS_ASYMM_DIR}  ${CURDIR}/../../../../variables/gbp/6node/demo-asymmetric-chain/master/
+    Set Global Variable    ${ENDPOINTS_SYMM_DIR}   ${CURDIR}/../../../../variables/gbp/6node/demo-symmetric-chain/master/
+
+Set ODL Variables Lithium
+    [Documentation]    Sets variables specific to Lithium version
+    Set Global Variable    ${GBP_TENANT_ID}        f5c7d344-d1c7-4208-8531-2c2693657e12
+    Set Global Variable    ${TENANT_PATH}          ${GBP_TENANTS_API}/tenant/${GBP_TENANT_ID}
+    Set Global Variable    ${TENANT_ASYMM_FILE}    ${CURDIR}/../../../../variables/gbp/6node/demo-asymmetric-chain/lithium/tenants.json
+    Set Global Variable    ${TENANT_SYMM_FILE}     ${CURDIR}/../../../../variables/gbp/6node/demo-symmetric-chain/lithium/tenants.json
+    Set Global Variable    ${SFF_FILE}             ${CURDIR}/../../../../variables/gbp/6node/lithium/service_function_forwarders.json
+    Set Global Variable    ${ENDPOINTS_ASYMM_DIR}  ${CURDIR}/../../../../variables/gbp/6node/demo-asymmetric-chain/lithium/
+    Set Global Variable    ${ENDPOINTS_SYMM_DIR}   ${CURDIR}/../../../../variables/gbp/6node/demo-symmetric-chain/lithium/
diff --git a/csit/suites/groupbasedpolicy/GBPSFC/6-node/__init__.robot b/csit/suites/groupbasedpolicy/GBPSFC/6-node/__init__.robot
new file mode 100644 (file)
index 0000000..40aa164
--- /dev/null
@@ -0,0 +1,42 @@
+*** Settings ***
+Documentation     Setup/teardown for GBPSFC 6-node topology
+Suite Setup       Setup Everything
+Suite Teardown    Teardown Everything
+Library           SSHLibrary
+Library           RequestsLibrary
+Resource          ../../../../libraries/Utils.robot
+Resource          ../../../../libraries/GBP/ConnUtils.robot
+Resource          Variables.robot
+Variables         ../../../../variables/Variables.py
+
+
+
+*** Variables ***
+${timeout} =     10s
+
+
+*** Keywords ***
+Setup Everything
+    [Documentation]    Initial setup of remote VM. Copying of scripts and installation python packages to virtual env if missing.
+    Create Session    session    http://${ODL}:${RESTCONFPORT}    auth=${AUTH}    headers=${HEADERS}
+    Wait Until Keyword Succeeds    10x    30 s    Get Data From URI
+    ...    session    ${OF_OVERLAY_CONFIG_PATH}    headers=${headers}
+    Delete All Sessions
+    :FOR    ${GBPSFC}    IN    @{GBPSFCs}
+    \    ConnUtils.Connect and Login    ${GBPSFC}    timeout=${timeout}
+    # TODO if something extra needs to be installed, please do it in virt-env
+    \    ${stderr}    SSHLibrary.Execute Command    virtualenv --system-site-packages ${VE_DIR}    return_stdout=False    return_stderr=True    return_rc=False
+    \    Should Be Empty    ${stderr}
+    \    SSHLibrary.Put File    ${CURDIR}/../../common_scripts/*    ${VM_HOME_FOLDER}${/}${VM_SCRIPTS_FOLDER}/    mode=0755
+    \    ${stdout}    ${stderr}    ${rc}    ConnUtils.Execute in VE    pip freeze | grep ipaddr -q || pip install ipaddr    timeout=${timeout}
+    \    Should Be Equal As Numbers    ${rc}    0
+    \    SSHLibrary.Close Connection
+    Set ODL Variables
+
+Teardown Everything
+    [Documentation]    Clearing remote VM - removing copied scripts.
+    Log    stop_suite_in_6_node
+    :FOR    ${GBPSFC}    IN    @{GBPSFCs}
+    \    ConnUtils.Connect and Login    ${GBPSFC}    timeout=${timeout}
+    \    SSHLibrary.Execute Command    sudo rm -rf ${VM_HOME_FOLDER}${/}${VM_SCRIPTS_FOLDER}
+    \    SSHLibrary.Close Connection
diff --git a/csit/suites/groupbasedpolicy/GBPSFC/6-node/demo-asymmetric-chain/000_setup.robot b/csit/suites/groupbasedpolicy/GBPSFC/6-node/demo-asymmetric-chain/000_setup.robot
new file mode 100644 (file)
index 0000000..7f08c82
--- /dev/null
@@ -0,0 +1,7 @@
+*** Settings ***
+Resource          ../Variables.robot
+Resource          ../GBPSFC_6node.robot
+
+*** Test Cases ***
+Initialize Nodes
+     Setup Nodes    ${GBPSFCs}    ${CURDIR}/init_scripts
diff --git a/csit/suites/groupbasedpolicy/GBPSFC/6-node/demo-asymmetric-chain/005_wait_for_connections.robot b/csit/suites/groupbasedpolicy/GBPSFC/6-node/demo-asymmetric-chain/005_wait_for_connections.robot
new file mode 100644 (file)
index 0000000..5668be3
--- /dev/null
@@ -0,0 +1,19 @@
+*** Settings ***
+Documentation     Waiting for manager and switch connections.
+Library           SSHLibrary
+Resource          ../../../../../libraries/GBP/ConnUtils.robot
+Resource          ../../../../../libraries/GBP/OpenFlowUtils.robot
+Resource          ../Variables.robot
+Resource          ../Connections.robot
+Suite Setup       Start Connections
+Suite Teardown    Close Connections
+
+*** Testcases ***
+
+Wait For Manager Connected on GBPSFC2
+    Switch Connection    GPSFC2_CONNECTION
+    Wait Until Keyword Succeeds  2 min  3s    Manager is Connected
+
+Wait For Manager Connected on GBPSFC4
+    Switch Connection    GPSFC4_CONNECTION
+    Wait Until Keyword Succeeds  2 min  3s    Manager is Connected
index 549973cb3806b6c70153c04f62c65b0b8aecc803..aca76c4cb07d6172af052291db0f22dfd9765d03 100644 (file)
@@ -7,71 +7,62 @@ Library           OperatingSystem
 Variables         ../../../../../variables/Variables.py
 Resource          ../../../../../libraries/Utils.robot
 Resource          ../Variables.robot
-
-*** Variables ***
-${GBP_TENANT_ID}    f5c7d344-d1c7-4208-8531-2c2693657e12
-${TENANT_PATH}    /restconf/config/policy:tenants/tenant/${GBP_TENANT_ID}
-${TENANT_FILE}    ${CURDIR}/../../../../../variables/gbp/demo-asymmetric-chain/tenants.json
-${TUNNELS_PATH}    /restconf/config/opendaylight-inventory:nodes
-${TUNNELS_FILE}    ${CURDIR}/../../../../../variables/gbp/demo-asymmetric-chain/tunnels.json
-${ENDPOINTS_PATH}    /restconf/operations/endpoint:register-endpoint
-${SF_PATH}        /restconf/config/service-function:service-functions
-${SF_FILE}        ${CURDIR}/../../../../../variables/gbp/demo-asymmetric-chain/service_functions.json
-${SFF_PATH}       /restconf/config/service-function-forwarder:service-function-forwarders
-${SFF_FILE}       ${CURDIR}/../../../../../variables/gbp/demo-asymmetric-chain/service_function_forwarders.json
-${SFC_PATH}       /restconf/config/service-function-chain:service-function-chains
-${SFC_FILE}       ${CURDIR}/../../../../../variables/gbp/demo-asymmetric-chain/service_function_chains.json
-${SFP_PATH}       /restconf/config/service-function-path:service-function-paths
-${SFP_FILE}       ${CURDIR}/../../../../../variables/gbp/demo-asymmetric-chain/service_function_paths.json
-${h35_2_FILE}     ${CURDIR}/../../../../../variables/gbp/demo-asymmetric-chain/vethl-h35_2.json
-${h35_3_FILE}     ${CURDIR}/../../../../../variables/gbp/demo-asymmetric-chain/vethl-h35_3.json
-${h35_4_FILE}     ${CURDIR}/../../../../../variables/gbp/demo-asymmetric-chain/vethl-h35_4.json
-${h35_5_FILE}     ${CURDIR}/../../../../../variables/gbp/demo-asymmetric-chain/vethl-h35_5.json
-${h36_2_FILE}     ${CURDIR}/../../../../../variables/gbp/demo-asymmetric-chain/vethl-h36_2.json
-${h36_3_FILE}     ${CURDIR}/../../../../../variables/gbp/demo-asymmetric-chain/vethl-h36_3.json
-${h36_4_FILE}     ${CURDIR}/../../../../../variables/gbp/demo-asymmetric-chain/vethl-h36_4.json
-${h36_5_FILE}     ${CURDIR}/../../../../../variables/gbp/demo-asymmetric-chain/vethl-h36_5.json
-@{ENDPOINT_FILES}    ${h35_2_FILE}    ${h35_3_FILE}    ${h35_4_FILE}    ${h35_5_FILE}    ${h36_2_FILE}    ${h36_3_FILE}    ${h36_4_FILE}
-...               ${h36_5_FILE}
+Resource          ../../../../../libraries/GBP/OpenFlowUtils.robot
 
 *** Test Cases ***
 Put Service Functions
     [Documentation]    Register Service Functions to ODL
     ${json_to_edit}    OperatingSystem.Get File    ${SF_FILE}
-    ${edited_json}    Replace String    ${json_to_edit}    _SF1    ${GBPSFC3}
-    ${edited_json}    Replace String    ${edited_json}    _SF2    ${GBPSFC5}
+    ${edited_json}     Replace String    ${json_to_edit}    _SF1    ${GBPSFC3}
+    ${edited_json}     Replace String    ${edited_json}    _SF2    ${GBPSFC5}
     ${resp}    RequestsLibrary.Put    session    ${SF_PATH}    ${edited_json}    ${HEADERS}
     Should Be Equal As Strings    ${resp.status_code}    200
 
 Put Service Function Forwarders
     [Documentation]    Register Service Function Forwarders to ODL
     ${json_to_edit}    OperatingSystem.Get File    ${SFF_FILE}
-    ${edited_json}    Replace String    ${json_to_edit}    _SFF1    ${GBPSFC2}
-    ${edited_json}    Replace String    ${edited_json}    _SFF2    ${GBPSFC4}
+    ${edited_json}     Replace String    ${json_to_edit}    _SFF1    ${GBPSFC2}
+    ${edited_json}     Replace String    ${edited_json}    _SFF2    ${GBPSFC4}
     ${resp}    RequestsLibrary.Put    session    ${SFF_PATH}    ${edited_json}    ${HEADERS}
     Should Be Equal As Strings    ${resp.status_code}    200
 
+Wait For Manager and Switch Connected on GBPSFC2
+    [Documentation]    Making sure that manager is connected for further processing.
+    SSHLibrary.Open Connection    ${GBPSFC2}
+    Utils.Flexible Mininet Login
+    Wait Until Keyword Succeeds  2min  3s  Manager and Switch Connected  sw_name=sw2
+    SSHLibrary.Close Connection
+
+Wait For Manager and Switch Connected on GBPSFC4
+    [Documentation]    Making sure that manager is connected for further processing.
+    SSHLibrary.Open Connection    ${GBPSFC4}
+    Utils.Flexible Mininet Login
+    Wait Until Keyword Succeeds  2min  3s  Manager and Switch Connected  sw_name=sw4
+    SSHLibrary.Close Connection
+
 Put Service Function Chains
     [Documentation]    Register Service Function Chains to ODL
-    Add Elements To URI From File    ${SFC_PATH}    ${SFC_FILE}
+    Add Elements To URI From File    ${SFC_PATH}    ${SFC_ASYMM_FILE}
 
 Put Service Function Paths
     [Documentation]    Register Service Function Paths to ODL
-    Add Elements To URI From File    ${SFP_PATH}    ${SFP_FILE}
+    Add Elements To URI From File    ${SFP_PATH}    ${SFP_ASYMM_FILE}
 
 Put Tunnels
     [Documentation]    Send tunnel augmentation to ODL
     ${json_to_edit}    OperatingSystem.Get File    ${TUNNELS_FILE}
-    ${edited_json}    Replace String    ${json_to_edit}    _CLASSIFIER1    ${GBPSFC1}
-    ${edited_json}    Replace String    ${edited_json}    _CLASSIFIER2    ${GBPSFC6}
+    ${edited_json}     Replace String    ${json_to_edit}    _CLASSIFIER1    ${GBPSFC1}
+    ${edited_json}     Replace String    ${edited_json}    _CLASSIFIER2    ${GBPSFC6}
     ${resp}    RequestsLibrary.Put    session    ${TUNNELS_PATH}    ${edited_json}    ${HEADERS}
     Should Be Equal As Strings    ${resp.status_code}    200
 
 Put Tenant
     [Documentation]    Send Tenant Data to ODL
-    Add Elements To URI From File    ${TENANT_PATH}    ${TENANT_FILE}
+    Add Elements To URI From File    ${TENANT_PATH}    ${TENANT_ASYMM_FILE}
 
 Register Endpoints
     [Documentation]    Endpoints registration
-    : FOR    ${endpoint_file}    IN    @{ENDPOINT_FILES}
-    \    Post Elements To URI From File    ${ENDPOINTS_PATH}    ${endpoint_file}
+    @{endpoint_files} =  OperatingSystem.List Files In Directory    ${ENDPOINTS_ASYMM_DIR}    vethl*.*json    absolute
+    :FOR    ${endpoint_file}    IN    @{endpoint_files}
+    \    Post Elements To URI From File    ${ENDPOINT_REG_PATH}    ${endpoint_file}    ${HEADERS_YANG_JSON}
+
diff --git a/csit/suites/groupbasedpolicy/GBPSFC/6-node/demo-asymmetric-chain/015_wait_for_flows.robot b/csit/suites/groupbasedpolicy/GBPSFC/6-node/demo-asymmetric-chain/015_wait_for_flows.robot
new file mode 100644 (file)
index 0000000..6011f49
--- /dev/null
@@ -0,0 +1,45 @@
+*** Settings ***
+Documentation     Documentation     Waiting for flows to appear on switches.
+Library           SSHLibrary
+Resource          ../../../../../libraries/Utils.robot
+Resource          ../../../../../libraries/GBP/ConnUtils.robot
+Resource          ../../../../../libraries/GBP/DockerUtils.robot
+Resource          ../../../../../libraries/GBP/OpenFlowUtils.robot
+Variables         ../../../../../variables/Variables.py
+Resource          ../Variables.robot
+Resource          ../Connections.robot
+Suite Setup       Start Connections
+Suite Teardown    Close Connections
+
+*** Testcases ***
+
+Wait For Flows on GBPSFC1
+    [Documentation]    Waiting for flows to appear on OVS switch.
+    Switch Connection    GPSFC1_CONNECTION
+    Wait For Flows On Switch    ${GBPSFC1}    sw1
+
+Wait For Flows on GBPSFC2
+    [Documentation]    Waiting for flows to appear on OVS switch.
+    Switch Connection    GPSFC2_CONNECTION
+    Wait For Flows On Switch    ${GBPSFC2}    sw2
+
+Wait For Flows on GBPSFC3
+    [Documentation]    Waiting for flows to appear on OVS switch.
+    Switch Connection    GPSFC3_CONNECTION
+    Wait For Flows On Switch    ${GBPSFC3}    sw3
+
+Wait For Flows on GBPSFC4
+    [Documentation]    Waiting for flows to appear on OVS switch.
+    Switch Connection    GPSFC4_CONNECTION
+    Wait For Flows On Switch    ${GBPSFC4}    sw4
+
+Wait For Flows on GBPSFC5
+    [Documentation]    Waiting for flows to appear on OVS switch.
+    Switch Connection    GPSFC5_CONNECTION
+    Wait For Flows On Switch    ${GBPSFC5}    sw5
+
+Wait For Flows on GBPSFC6
+    [Documentation]    Waiting for flows to appear on OVS switch.
+    Switch Connection    GPSFC6_CONNECTION
+    Wait For Flows On Switch    ${GBPSFC6}    sw6
+
diff --git a/csit/suites/groupbasedpolicy/GBPSFC/6-node/demo-asymmetric-chain/031_track_icmp_h35_2_h36_2.robot b/csit/suites/groupbasedpolicy/GBPSFC/6-node/demo-asymmetric-chain/031_track_icmp_h35_2_h36_2.robot
new file mode 100644 (file)
index 0000000..c9aafcc
--- /dev/null
@@ -0,0 +1,43 @@
+*** Settings ***
+Documentation    Deep icmp traffic inspection.
+...    Nodes are located on the same VM in different subnets and are members of the same EPG.
+Library           SSHLibrary
+Resource          ../../../../../libraries/GBP/OpenFlowUtils.robot
+Resource          ../Variables.robot
+Resource          ../Connections.robot
+Suite Setup       Start Connections
+Suite Teardown    Close Connections
+
+*** Variables ***
+
+*** Testcases ***
+
+Ping Once from h35_2 to h36_2
+    [Documentation]    Test icmp request.
+    Set Test Variables    client_name=h35_2   client_ip=10.0.35.2    server_name=h36_2    server_ip=10.0.36.2
+    ...   ether_type=0x0800    proto=1
+    Switch Connection    GPSFC1_CONNECTION
+    Ping from Docker    ${CLIENT_NAME}    ${SERVER_IP}
+
+Start Endless Ping from h35_2 to h36_2
+    [Documentation]    Starting of endless pinging for traffic inspection.
+    Start Endless Ping from Docker    ${CLIENT_NAME}    ${SERVER_IP}
+
+Find ICMP Req from h35_2 to h36_2 on GBPSFC6
+    [Documentation]    Inspecting icmp req on GBPSFC1.
+    Switch Connection    GPSFC1_CONNECTION
+    ${flow}    Inspect Classifier Outbound    in_port=4    out_port=6    eth_type=${ETHER_TYPE}    inner_src_ip=${CLIENT_IP}
+    ...    inner_dst_ip=${SERVER_IP}    proto=${PROTO}
+
+Find ICMP Resp from h36_2 to h35_2 on GBPSFC6
+    [Documentation]    Inspecting icmp resp on GBPSFC1.
+    Switch Connection    GPSFC1_CONNECTION
+    ${flow}    Inspect Classifier Outbound    in_port=6    out_port=4    eth_type=${ETHER_TYPE}    inner_src_ip=${SERVER_IP}
+    ...    inner_dst_ip=${CLIENT_IP}    proto=${PROTO}
+
+Stop Endless Ping from h35_2 to h36_2
+    [Documentation]    Stoping of endless pinging after traffic inspection finishes.
+    Switch Connection    GPSFC1_CONNECTION
+    Stop Endless Ping from Docker to Address   ${CLIENT_NAME}    ${SERVER_IP}
+
+
diff --git a/csit/suites/groupbasedpolicy/GBPSFC/6-node/demo-asymmetric-chain/032_track_icmp_h35_2_h35_3.robot b/csit/suites/groupbasedpolicy/GBPSFC/6-node/demo-asymmetric-chain/032_track_icmp_h35_2_h35_3.robot
new file mode 100644 (file)
index 0000000..8722c8e
--- /dev/null
@@ -0,0 +1,43 @@
+*** Settings ***
+Documentation    Deep icmp traffic inspection.
+...    Nodes are located on the same VM in the same subnet and are members of the same EPG.
+Library           SSHLibrary
+Resource          ../../../../../libraries/GBP/OpenFlowUtils.robot
+Resource          ../Variables.robot
+Resource          ../Connections.robot
+Suite Setup       Start Connections
+Suite Teardown    Close Connections
+
+*** Variables ***
+
+*** Testcases ***
+
+Ping Once from h35_2 to h35_3
+    [Documentation]    Test icmp request.
+    Set Test Variables    client_name=h35_2   client_ip=10.0.35.2    server_name=h35_3    server_ip=10.0.35.3
+    ...   ether_type=0x0800    proto=1
+    Switch Connection    GPSFC1_CONNECTION
+    Ping from Docker    ${CLIENT_NAME}    ${SERVER_IP}
+
+Start Endless Ping from h35_2 to h35_3
+    [Documentation]    Starting of endless pinging for traffic inspection.
+    Start Endless Ping from Docker    ${CLIENT_NAME}    ${SERVER_IP}
+
+Find ICMP Req from h35_2 to h35_3 on GBPSFC6
+    [Documentation]    Inspecting icmp req on GBPSFC1.
+    Switch Connection    GPSFC1_CONNECTION
+    ${flow}    Inspect Classifier Outbound    in_port=4    out_port=5    eth_type=${ETHER_TYPE}    inner_src_ip=${CLIENT_IP}
+    ...    inner_dst_ip=${SERVER_IP}    proto=${PROTO}
+
+Find ICMP Resp from h35_3 to h35_2 on GBPSFC6
+    [Documentation]    Inspecting icmp resp on GBPSFC1.
+    Switch Connection    GPSFC1_CONNECTION
+    ${flow}    Inspect Classifier Outbound    in_port=5    out_port=4    eth_type=${ETHER_TYPE}    inner_src_ip=${SERVER_IP}
+    ...    inner_dst_ip=${CLIENT_IP}    proto=${PROTO}
+
+Stop Endless Ping from h35_2 to h35_3
+    [Documentation]    Stoping of endless pinging after traffic inspection finishes.
+    Switch Connection    GPSFC1_CONNECTION
+    Stop Endless Ping from Docker to Address   ${CLIENT_NAME}    ${SERVER_IP}
+
+
diff --git a/csit/suites/groupbasedpolicy/GBPSFC/6-node/demo-asymmetric-chain/033_track_icmp_h35_4_h36_4.robot b/csit/suites/groupbasedpolicy/GBPSFC/6-node/demo-asymmetric-chain/033_track_icmp_h35_4_h36_4.robot
new file mode 100644 (file)
index 0000000..5e35a18
--- /dev/null
@@ -0,0 +1,43 @@
+*** Settings ***
+Documentation    Deep icmp traffic inspection.
+...    Nodes are located on the same VM, in different subnets and are members of the same EPG.
+Library           SSHLibrary
+Resource          ../../../../../libraries/GBP/OpenFlowUtils.robot
+Resource          ../Variables.robot
+Resource          ../Connections.robot
+Suite Setup       Start Connections
+Suite Teardown    Close Connections
+
+*** Variables ***
+
+*** Testcases ***
+
+Ping from h36_4 to h35_4
+    [Documentation]    Test icmp request.
+    Set Test Variables    client_name=h36_4   client_ip=10.0.36.4    server_name=h35_4    server_ip=10.0.35.4
+    ...   ether_type=0x0800    proto=1
+    Switch Connection    GPSFC6_CONNECTION
+    Ping from Docker    ${CLIENT_NAME}    ${SERVER_IP}
+
+Start Endless Ping from h36_4 to h35_4
+    [Documentation]    Starting of endless pinging for traffic inspection.
+    Start Endless Ping from Docker    ${CLIENT_NAME}    ${SERVER_IP}
+
+Find ICMP Req from h36_4 to h35_4 on GBPSFC6
+    [Documentation]    Inspecting icmp req on GBPSFC6.
+    Switch Connection    GPSFC6_CONNECTION
+    ${flow}    Inspect Classifier Outbound    in_port=6    out_port=4    eth_type=0x0800    inner_src_ip=${CLIENT_IP}
+    ...    inner_dst_ip=${SERVER_IP}    proto=${PROTO}
+
+Find ICMP Resp from h35_4 to h36_4 on GBPSFC6
+    [Documentation]    Inspecting icmp resp on GBPSFC6.
+    Switch Connection    GPSFC6_CONNECTION
+    ${flow}    Inspect Classifier Outbound    in_port=4    out_port=6    eth_type=0x0800    inner_src_ip=${SERVER_IP}
+    ...    inner_dst_ip=${CLIENT_IP}    proto=${PROTO}
+
+Stop Endless Ping from h36_4 to h35_4
+    [Documentation]    Stoping of endless pinging after traffic inspection finishes.
+    Switch Connection    GPSFC6_CONNECTION
+    Stop Endless Ping from Docker to Address   ${CLIENT_NAME}    ${SERVER_IP}
+
+
diff --git a/csit/suites/groupbasedpolicy/GBPSFC/6-node/demo-asymmetric-chain/034_track_icmp_h36_5_h35_2.robot b/csit/suites/groupbasedpolicy/GBPSFC/6-node/demo-asymmetric-chain/034_track_icmp_h36_5_h35_2.robot
new file mode 100644 (file)
index 0000000..74b6412
--- /dev/null
@@ -0,0 +1,55 @@
+*** Settings ***
+Documentation    Deep icmp traffic inspection.
+...    Nodes are located on different VMs in different subnets and are members of different EPGs.
+Library           SSHLibrary
+Resource          ../../../../../libraries/GBP/OpenFlowUtils.robot
+Resource          ../Variables.robot
+Resource          ../Connections.robot
+Suite Setup       Start Connections
+Suite Teardown    Close Connections
+
+*** Variables ***
+
+*** Testcases ***
+
+Ping from h36_5 to h35_2
+    [Documentation]    Test icmp request.
+    Set Test Variables    client_name=h36_5   client_ip=10.0.36.5    server_name=h35_2    server_ip=10.0.35.2
+    ...   ether_type=0x0800    proto=1    vxlan_port=3
+    Switch Connection    GPSFC6_CONNECTION
+    Ping from Docker    ${CLIENT_NAME}    ${SERVER_IP}
+
+Start Endless Ping from h36_5 to h35_2
+    [Documentation]    Starting of endless pinging for traffic inspection.
+    Start Endless Ping from Docker    ${CLIENT_NAME}    ${SERVER_IP}
+
+Find ICMP Req from h36_5 to h35_2 on GBPSFC6
+    [Documentation]    Inspecting icmp req on GBPSFC6.
+    Switch Connection    GPSFC6_CONNECTION
+    ${flow}    Inspect Classifier Outbound    in_port=7    out_port=${VXLAN_PORT}    eth_type=${ETHER_TYPE}    inner_src_ip=${CLIENT_IP}
+    ...    inner_dst_ip=${SERVER_IP}    next_hop_ip=${GBPSFC1}    proto=${PROTO}
+
+Find ICMP Req from h36_5 to h35_2 on GBPSFC1
+    [Documentation]    Inspecting icmp req on GBPSFC1.
+    Switch Connection    GPSFC1_CONNECTION
+    Inspect Classifier Inbound    in_port=${VXLAN_PORT}    out_port=4    eth_type=${ETHER_TYPE}    inner_src_ip=${CLIENT_IP}    inner_dst_ip=${SERVER_IP}
+    ...    outer_src_ip=${GBPSFC6}    outer_dst_ip=${GBPSFC1}    proto=${PROTO}
+
+Find ICMP Resp from h35_2 to h36_5 on GBPSFC1
+    [Documentation]    Inspecting icmp resp on GBPSFC1.
+    Switch Connection    GPSFC1_CONNECTION
+    ${flow}    Inspect Classifier Outbound    in_port=4    out_port=${VXLAN_PORT}    eth_type=${ETHER_TYPE}    inner_src_ip=${SERVER_IP}
+    ...    inner_dst_ip=${CLIENT_IP}    next_hop_ip=${GBPSFC6}    proto=${PROTO}
+
+Find ICMP Resp from h35_2 to h36_5 on GBPSFC6
+    [Documentation]    Inspecting icmp resp on GBPSFC6.
+    Switch Connection    GPSFC6_CONNECTION
+    Inspect Classifier Inbound    in_port=${VXLAN_PORT}    out_port=7    eth_type=${ETHER_TYPE}    inner_src_ip=${SERVER_IP}    inner_dst_ip=${CLIENT_IP}
+    ...    outer_src_ip=${GBPSFC1}    outer_dst_ip=${GBPSFC6}    proto=${PROTO}
+
+Stop Endless Ping from h36_5 to h35_2
+    [Documentation]    Stoping of endless pinging after traffic inspection finishes.
+    Switch Connection    GPSFC6_CONNECTION
+    Stop Endless Ping from Docker to Address   ${CLIENT_NAME}    ${SERVER_IP}
+
+
diff --git a/csit/suites/groupbasedpolicy/GBPSFC/6-node/demo-asymmetric-chain/035_track_curl_h35_2_h36_2.robot b/csit/suites/groupbasedpolicy/GBPSFC/6-node/demo-asymmetric-chain/035_track_curl_h35_2_h36_2.robot
new file mode 100644 (file)
index 0000000..071e529
--- /dev/null
@@ -0,0 +1,94 @@
+*** Settings ***
+Documentation    Deep inspection of HTTP traffic on asymmetric chain.
+...    Nodes are located on the same VM.
+Library           SSHLibrary
+Resource          ../../../../../libraries/GBP/OpenFlowUtils.robot
+Resource          ../../../../../libraries/GBP/ConnUtils.robot
+Resource          ../Variables.robot
+Resource          ../Connections.robot
+Suite Setup       Start Connections
+Suite Teardown    Close Connections
+
+*** Variables ***
+
+*** Testcases ***
+
+Start HTTP on h36_2 on Port 80
+    [Documentation]    Starting HTTP service on docker container.
+    Set Test Variables    client_name=h35_2   client_ip=10.0.35.2    server_name=h36_2    server_ip=10.0.36.2
+    ...   service_port=80    ether_type=0x0800    proto=6    vxlan_gpe_port=2
+    Switch Connection    GPSFC1_CONNECTION
+    Start HTTP Service on Docker    ${SERVER_NAME}     ${SERVICE_PORT}
+
+Curl h36_2 from h35_2
+    [Documentation]     Test HTTP request from a docker container to serving docker container.
+    Curl from Docker    ${CLIENT_NAME}    ${SERVER_IP}    ${SERVICE_PORT}
+
+Start Endless Curl on h35_2 on port 80
+    [Documentation]    Starting endless HTTP session for traffic inspection.
+    Start Endless Curl from Docker    ${CLIENT_NAME}    ${SERVER_IP}     ${SERVICE_PORT}    sleep=1
+
+On GBPSFC1 Send HTTP req h35_2-h36_2 to GBPSFC2
+    [Documentation]    HTTP traffic inspection.
+    Switch Connection    GPSFC1_CONNECTION
+    ${flow}    Inspect Classifier Outbound    in_port=4    out_port=${VXLAN_GPE_PORT}    eth_type=${ETHER_TYPE}    inner_src_ip=${CLIENT_IP}
+    ...    inner_dst_ip=${SERVER_IP}    next_hop_ip=${GBPSFC2}    nsi=255    proto=${PROTO}   dst_port=${SERVICE_PORT}
+    ${nsp_35_2-nsp_36_2}    GET NSP Value From Flow    ${flow}
+    Set Global Variable    ${NSP}    ${nsp_35_2-nsp_36_2}
+
+On GBPSFC2 Send HTTP req h35_2-h36_2 to GBPSFC3
+    [Documentation]    HTTP traffic inspection.
+    Switch Connection    GPSFC2_CONNECTION
+     Inspect Service Function Forwarder    in_port=${VXLAN_GPE_PORT}    out_port=${VXLAN_GPE_PORT}    outer_src_ip=${GBPSFC1}    outer_dst_ip=${GBPSFC2}    eth_type=${ETHER_TYPE}
+    ...    inner_src_ip=${CLIENT_IP}    inner_dst_ip=${SERVER_IP}    next_hop_ip=${GBPSFC3}    nsp=${NSP}    nsi=255    proto=${PROTO}
+
+On GBPSFC3 Send HTTP req h35_2-h36_2 to GBPSFC2
+    [Documentation]    HTTP traffic inspection.
+    Switch Connection    GPSFC3_CONNECTION
+    Inspect Service Function    in_port=${VXLAN_GPE_PORT}    out_port=${VXLAN_GPE_PORT}    outer_src_ip=${GBPSFC2}    outer_dst_ip=${GBPSFC3}    eth_type=${ETHER_TYPE}
+    ...    inner_src_ip=${CLIENT_IP}    inner_dst_ip=${SERVER_IP}    next_hop_ip=${GBPSFC2}    nsp=${NSP}    received_nsi=255
+
+On GBPSFC2 Send HTTP req h35_2-h36_2 to GBPSFC4
+    [Documentation]    HTTP traffic inspection.
+    Switch Connection    GPSFC2_CONNECTION
+     Inspect Service Function Forwarder    in_port=${VXLAN_GPE_PORT}    out_port=${VXLAN_GPE_PORT}    outer_src_ip=${GBPSFC3}    outer_dst_ip=${GBPSFC2}    eth_type=${ETHER_TYPE}
+    ...    inner_src_ip=${CLIENT_IP}    inner_dst_ip=${SERVER_IP}    next_hop_ip=${GBPSFC4}    nsp=${NSP}    nsi=254    proto=${PROTO}
+
+On GBPSFC4 Send HTTP req h35_2-h36_2 to GBPSFC5
+    [Documentation]    HTTP traffic inspection.
+    Switch Connection    GPSFC4_CONNECTION
+     Inspect Service Function Forwarder    in_port=${VXLAN_GPE_PORT}    out_port=${VXLAN_GPE_PORT}    outer_src_ip=${GBPSFC2}    outer_dst_ip=${GBPSFC4}    eth_type=${ETHER_TYPE}
+    ...    inner_src_ip=${CLIENT_IP}    inner_dst_ip=${SERVER_IP}    next_hop_ip=${GBPSFC5}    nsp=${NSP}    nsi=254    proto=${PROTO}
+
+On GBPSFC5 Send HTTP req h35_2-h36_2 to GBPSFC4
+    [Documentation]    HTTP traffic inspection.
+    Switch Connection    GPSFC5_CONNECTION
+    Inspect Service Function    in_port=${VXLAN_GPE_PORT}    out_port=${VXLAN_GPE_PORT}    outer_src_ip=${GBPSFC4}    outer_dst_ip=${GBPSFC5}    eth_type=${ETHER_TYPE}
+    ...    inner_src_ip=${CLIENT_IP}    inner_dst_ip=${SERVER_IP}    next_hop_ip=${GBPSFC4}    nsp=${NSP}    received_nsi=254
+
+On GBPSFC4 Send HTTP req h35_2-h36_2 to GBPSFC1
+    [Documentation]    HTTP traffic inspection.
+    Switch Connection    GPSFC4_CONNECTION
+     Inspect Service Function Forwarder    in_port=${VXLAN_GPE_PORT}    out_port=${VXLAN_GPE_PORT}    outer_src_ip=${GBPSFC5}    outer_dst_ip=${GBPSFC4}    eth_type=${ETHER_TYPE}
+    ...    inner_src_ip=${CLIENT_IP}    inner_dst_ip=${SERVER_IP}    next_hop_ip=${GBPSFC1}    nsp=${NSP}    nsi=253    proto=${PROTO}
+
+On GBPSFC1 Send HTTP req h35_2-h36_2 to h36_2
+    [Documentation]    HTTP traffic inspection.
+    Switch Connection    GPSFC1_CONNECTION
+    Inspect Classifier Inbound    in_port=${VXLAN_GPE_PORT}    out_port=6    eth_type=${ETHER_TYPE}    inner_src_ip=${CLIENT_IP}    inner_dst_ip=${SERVER_IP}
+    ...    outer_src_ip=${GBPSFC4}    outer_dst_ip=${GBPSFC1}    nsp=${NSP}    nsi=253    proto=${PROTO}
+
+On GBPSFC1 Send HTTP resp h36_2-h35_2 to h35_2
+    [Documentation]    HTTP traffic inspection.
+    Switch Connection    GPSFC1_CONNECTION
+    ${flow}    Inspect Classifier Outbound    in_port=6    out_port=4    eth_type=${ETHER_TYPE}    inner_src_ip=${SERVER_IP}
+    ...    inner_dst_ip=${CLIENT_IP}   proto=${PROTO}   src_port=${SERVICE_PORT}
+
+Stop Endless Curl on h36_2 on port 80
+    [Documentation]    Stopping endless HTTP session after traffic inspection finishes.
+    Stop Endless Curl from Docker    ${CLIENT_NAME}
+
+Stop HTTP on h36_2 on Port 80
+    [Documentation]    Stopping HTTP service on the docker container.
+    Stop HTTP Service on Docker    ${SERVER_NAME}
+
diff --git a/csit/suites/groupbasedpolicy/GBPSFC/6-node/demo-asymmetric-chain/036_track_curl_h35_3_h36_4.robot b/csit/suites/groupbasedpolicy/GBPSFC/6-node/demo-asymmetric-chain/036_track_curl_h35_3_h36_4.robot
new file mode 100644 (file)
index 0000000..bfae4ed
--- /dev/null
@@ -0,0 +1,103 @@
+*** Settings ***
+Documentation    Deep inspection of HTTP traffic on asymmetric chain.
+...    Nodes are located on different VMs.
+Library           SSHLibrary
+Resource          ../../../../../libraries/GBP/OpenFlowUtils.robot
+Resource          ../../../../../libraries/GBP/ConnUtils.robot
+Resource          ../Variables.robot
+Resource          ../Connections.robot
+Suite Setup       Start Connections
+Suite Teardown    Close Connections
+
+*** Variables ***
+
+*** Testcases ***
+
+Start HTTP on h36_4 on Port 80
+    [Documentation]    Starting HTTP service on docker container.
+    Set Test Variables    client_name=h35_3   client_ip=10.0.35.3    server_name=h36_4    server_ip=10.0.36.4
+    ...   service_port=80    ether_type=0x0800    proto=6    vxlan_gpe_port=2    vxlan_port=3
+    Switch Connection    GPSFC6_CONNECTION
+    Start HTTP Service on Docker    ${SERVER_NAME}    ${SERVICE_PORT}
+
+Curl h36_2 from h35_3
+    [Documentation]     Test HTTP request from a docker container to serving docker container.
+    Switch Connection    GPSFC1_CONNECTION
+    Curl from Docker    ${CLIENT_NAME}    ${SERVER_IP}    service_port=${SERVICE_PORT}
+
+Start Endless Curl on h35_3 on port 80
+    [Documentation]    Starting endless HTTP session for traffic inspection.
+    Start Endless Curl from Docker    ${CLIENT_NAME}    ${SERVER_IP}    ${SERVICE_PORT}    sleep=1
+
+On GBPSFC1 Send HTTP req h35_3-h36_4 to GBPSFC2
+    [Documentation]    HTTP traffic inspection.
+    Switch Connection    GPSFC1_CONNECTION
+    ${flow}    Inspect Classifier Outbound    in_port=5    out_port=${VXLAN_GPE_PORT}    eth_type=${ETHER_TYPE}    inner_src_ip=${CLIENT_IP}
+    ...    inner_dst_ip=${SERVER_IP}    next_hop_ip=${GBPSFC2}    nsi=255    proto=${PROTO}   dst_port=${SERVICE_PORT}
+    ${nsp_35_3-nsp_36_4}    GET NSP Value From Flow    ${flow}
+    Set Global Variable    ${NSP}    ${nsp_35_3-nsp_36_4}
+
+On GBPSFC2 Send HTTP req h35_3-h36_4 to GBPSFC3
+    [Documentation]    HTTP traffic inspection.
+    Switch Connection    GPSFC2_CONNECTION
+     Inspect Service Function Forwarder    in_port=${VXLAN_GPE_PORT}    out_port=${VXLAN_GPE_PORT}    outer_src_ip=${GBPSFC1}    outer_dst_ip=${GBPSFC2}    eth_type=${ETHER_TYPE}
+    ...    inner_src_ip=${CLIENT_IP}    inner_dst_ip=${SERVER_IP}    next_hop_ip=${GBPSFC3}    nsp=${NSP}    nsi=255    proto=${PROTO}
+
+On GBPSFC3 Send HTTP req h35_3-h36_4 to GBPSFC2
+    [Documentation]    HTTP traffic inspection.
+    Switch Connection    GPSFC3_CONNECTION
+    Inspect Service Function    in_port=${VXLAN_GPE_PORT}    out_port=${VXLAN_GPE_PORT}    outer_src_ip=${GBPSFC2}    outer_dst_ip=${GBPSFC3}    eth_type=${ETHER_TYPE}
+    ...    inner_src_ip=${CLIENT_IP}    inner_dst_ip=${SERVER_IP}    next_hop_ip=${GBPSFC2}    nsp=${NSP}    received_nsi=255
+
+On GBPSFC2 Send HTTP req h35_3-h36_4 to GBPSFC4
+    [Documentation]    HTTP traffic inspection.
+    Switch Connection    GPSFC2_CONNECTION
+     Inspect Service Function Forwarder    in_port=${VXLAN_GPE_PORT}    out_port=${VXLAN_GPE_PORT}    outer_src_ip=${GBPSFC3}    outer_dst_ip=${GBPSFC2}    eth_type=${ETHER_TYPE}
+    ...    inner_src_ip=${CLIENT_IP}    inner_dst_ip=${SERVER_IP}    next_hop_ip=${GBPSFC4}    nsp=${NSP}    nsi=254    proto=${PROTO}
+
+On GBPSFC4 Send HTTP req h35_3-h36_4 to GBPSFC5
+    [Documentation]    HTTP traffic inspection.
+    Switch Connection    GPSFC4_CONNECTION
+     Inspect Service Function Forwarder    in_port=${VXLAN_GPE_PORT}    out_port=${VXLAN_GPE_PORT}    outer_src_ip=${GBPSFC2}    outer_dst_ip=${GBPSFC4}    eth_type=${ETHER_TYPE}
+    ...    inner_src_ip=${CLIENT_IP}    inner_dst_ip=${SERVER_IP}    next_hop_ip=${GBPSFC5}    nsp=${NSP}    nsi=254    proto=${PROTO}
+
+On GBPSFC5 Send HTTP req h35_3-h36_4 to GBPSFC4
+    [Documentation]    HTTP traffic inspection.
+    Switch Connection    GPSFC5_CONNECTION
+    Inspect Service Function    in_port=${VXLAN_GPE_PORT}    out_port=${VXLAN_GPE_PORT}    outer_src_ip=${GBPSFC4}    outer_dst_ip=${GBPSFC5}    eth_type=${ETHER_TYPE}
+    ...    inner_src_ip=${CLIENT_IP}    inner_dst_ip=${SERVER_IP}    next_hop_ip=${GBPSFC4}    nsp=${NSP}    received_nsi=254
+
+On GBPSFC4 Send HTTP req h35_3-h36_4 to GBPSFC6
+    [Documentation]    HTTP traffic inspection.
+    Switch Connection    GPSFC4_CONNECTION
+     Inspect Service Function Forwarder    in_port=${VXLAN_GPE_PORT}    out_port=${VXLAN_GPE_PORT}    outer_src_ip=${GBPSFC5}    outer_dst_ip=${GBPSFC4}    eth_type=${ETHER_TYPE}
+    ...    inner_src_ip=${CLIENT_IP}    inner_dst_ip=${SERVER_IP}    next_hop_ip=${GBPSFC6}    nsp=${NSP}    nsi=253    proto=${PROTO}
+
+On GBPSFC6 Send HTTP req h35_3-h36_4 to h36_4
+    [Documentation]    HTTP traffic inspection.
+    Switch Connection    GPSFC6_CONNECTION
+    Inspect Classifier Inbound    in_port=${VXLAN_GPE_PORT}    out_port=6    eth_type=${ETHER_TYPE}    inner_src_ip=${CLIENT_IP}    inner_dst_ip=${SERVER_IP}
+    ...    outer_src_ip=${GBPSFC4}    outer_dst_ip=${GBPSFC6}    nsp=${NSP}    nsi=253    proto=${PROTO}
+
+On GBPSFC6 Send HTTP resp h36_4-h35_3 to GBPSFC1
+    [Documentation]    HTTP traffic inspection.
+    Switch Connection    GPSFC6_CONNECTION
+    ${flow}    Inspect Classifier Outbound    in_port=6    out_port=${VXLAN_PORT}    eth_type=${ETHER_TYPE}    inner_src_ip=${SERVER_IP}
+    ...    inner_dst_ip=${CLIENT_IP}    next_hop_ip=${GBPSFC1}    proto=${PROTO}   src_port=${SERVICE_PORT}
+
+On GBPSFC1 Send HTTP resp h36_4-h35_3 to h35_3
+    [Documentation]    HTTP traffic inspection.
+    Switch Connection    GPSFC1_CONNECTION
+    Inspect Classifier Inbound    in_port=${VXLAN_PORT}    out_port=5    eth_type=${ETHER_TYPE}    inner_src_ip=${SERVER_IP}    inner_dst_ip=${CLIENT_IP}
+    ...    outer_src_ip=${GBPSFC6}    outer_dst_ip=${GBPSFC1}    proto=${PROTO}
+
+Stop Endless Curl on h36_2 on port 80
+    [Documentation]    Stopping endless HTTP session after traffic inspection finishes.
+    Switch Connection    GPSFC1_CONNECTION
+    Stop Endless Curl from Docker    ${CLIENT_NAME}
+
+Stop HTTP on h36_2 on Port 80
+    [Documentation]    Stopping HTTP service on the docker container.
+    Switch Connection    GPSFC6_CONNECTION
+    Stop HTTP Service on Docker    ${SERVER_NAME}
+
index 9d3591fc8cc77d7053dae6d46dddf5f8f016f036..d59ac3bfde080fa76f3cb38825bf1353b117b0d2 100644 (file)
@@ -9,25 +9,16 @@ Library           json
 Variables         ../../../../../variables/Variables.py
 Resource          ../../../../../libraries/Utils.robot
 Resource          ../../../../../libraries/GBP/RestconfUtils.robot
-
-*** Variables ***
-${GBP_TENENT_ID}    f5c7d344-d1c7-4208-8531-2c2693657e12
-${TENANT_PATH}    /restconf/config/policy:tenants/tenant/${GBP_TENENT_ID}
-${TUNNELS_PATH}    /restconf/config/opendaylight-inventory:nodes
-${OPER_ENDPOINTS_PATH}    /restconf/operational/endpoint:endpoints
-${UNREG_ENDPOINTS_PATH}    /restconf/operations/endpoint:unregister-endpoint
-${SF_PATH}        /restconf/config/service-function:service-functions
-${SFF_PATH}       /restconf/config/service-function-forwarder:service-function-forwarders
-${SFC_PATH}       /restconf/config/service-function-chain:service-function-chains
-${SFP_PATH}       /restconf/config/service-function-path:service-function-paths
-${OPER_NODES}     /restconf/operational/opendaylight-inventory:nodes/
+Resource          ../Variables.robot
 
 *** Test Cases ***
+
 Delete Service Function Paths
     [Documentation]    Delete Service Function Paths from ODL
     [Tags]    GBPSFCTEAR
     Remove All Elements At URI And Verify    ${SFP_PATH}
 
+
 Delete Service Function Chains
     [Documentation]    Delete Service Function Chains from ODL
     [Tags]    GBPSFCTEAR
@@ -56,4 +47,11 @@ Delete Tenant
 Unregister Endpoints
     [Documentation]    Unregister Endpoints Endpoints from ODL
     [Tags]    GBPSFCTEAR
-    Unregister Endpoints    ${OPER_ENDPOINTS_PATH}
+    RestconfUtils.Unregister Endpoints
+
+Delete OVSDB Topology If Present
+    [Documentation]    Delete OVSDB topology from ODL
+    [Tags]    GBPSFCTEAR
+    ${resp}    RequestsLibrary.Get    session    ${TOPOLOGY_PATH}
+    Run Keyword If    ${resp.status_code} == 200
+    ...    Remove All Elements At URI And Verify    ${TOPOLOGY_PATH}
diff --git a/csit/suites/groupbasedpolicy/GBPSFC/6-node/demo-asymmetric-chain/999_teardown.robot b/csit/suites/groupbasedpolicy/GBPSFC/6-node/demo-asymmetric-chain/999_teardown.robot
new file mode 100644 (file)
index 0000000..4e0cfed
--- /dev/null
@@ -0,0 +1,18 @@
+*** Settings ***
+Library           SSHLibrary
+Resource          ../../../../../libraries/Utils.robot
+Resource          ../../../../../libraries/GBP/ConnUtils.robot
+Variables         ../../../../../variables/Variables.py
+Resource          ../Variables.robot
+Resource          ../GBPSFC_6node.robot
+
+
+*** Variables ***
+${timeout} =     10s
+
+
+*** Test Cases ***
+Teardown Suite
+    Log    Teardown suite in asymetric-chain
+    :FOR    ${GBPSFC}    IN    @{GBPSFCs}
+    \    GBPSFC_6node.Teardown Node    ${GBPSFC}    ${CURDIR}    timeout=${timeout}
diff --git a/csit/suites/groupbasedpolicy/GBPSFC/6-node/demo-asymmetric-chain/init_scripts/infrastructure_config.py b/csit/suites/groupbasedpolicy/GBPSFC/6-node/demo-asymmetric-chain/init_scripts/infrastructure_config.py
new file mode 100644 (file)
index 0000000..46a7def
--- /dev/null
@@ -0,0 +1,64 @@
+# Config for switches, tunnelIP is the local IP address.
+switches = [{'name': 'sw1',
+             'type': 'gbp',
+             'dpid': '1'},
+            {'name': 'sw2',
+             'type': 'sff',
+             'dpid': '2'},
+            {'name': 'sw3',
+             'type': 'sf',
+             'dpid': '3'},
+            {'name': 'sw4',
+             'type': 'sff',
+             'dpid': '4'},
+            {'name': 'sw5',
+             'type': 'sf',
+             'dpid': '5'},
+            {'name': 'sw6',
+             'type': 'gbp',
+             'dpid': '6'},
+            {'name': 'sw7',
+             'type': 'none',
+             'dpid': '7'},
+            {'name': 'sw8',
+             'type': 'none',
+             'dpid': '8'}
+            ]
+
+defaultContainerImage = 'alagalah/odlpoc_ovs230'
+
+# Note that tenant name and endpointGroup name come from policy_config.py
+
+hosts = [{'name': 'h35_2',
+          'mac': '00:00:00:00:35:02',
+          'ip': '10.0.35.2/24',
+          'switch': 'sw1'},
+         {'name': 'h35_3',
+          'ip': '10.0.35.3/24',
+          'mac': '00:00:00:00:35:03',
+          'switch': 'sw1'},
+         {'name': 'h35_4',
+          'ip': '10.0.35.4/24',
+          'mac': '00:00:00:00:35:04',
+          'switch': 'sw6'},
+         {'name': 'h35_5',
+          'ip': '10.0.35.5/24',
+          'mac': '00:00:00:00:35:05',
+          'switch': 'sw6'},
+         {'name': 'h36_2',
+          'ip': '10.0.36.2/24',
+          'mac': '00:00:00:00:36:02',
+          'switch': 'sw1'},
+         {'name': 'h36_3',
+          'ip': '10.0.36.3/24',
+          'mac': '00:00:00:00:36:03',
+          'switch': 'sw1'},
+         {'name': 'h36_4',
+          'ip': '10.0.36.4/24',
+          'mac': '00:00:00:00:36:04',
+          'switch': 'sw6'},
+         {'name': 'h36_5',
+          'ip': '10.0.36.5/24',
+          'mac': '00:00:00:00:36:05',
+          'switch': 'sw6'}
+         ]
diff --git a/csit/suites/groupbasedpolicy/GBPSFC/6-node/demo-asymmetric-chain/init_scripts/sf-flows.sh b/csit/suites/groupbasedpolicy/GBPSFC/6-node/demo-asymmetric-chain/init_scripts/sf-flows.sh
new file mode 100644 (file)
index 0000000..0c7fc96
--- /dev/null
@@ -0,0 +1,18 @@
+#!/usr/bin/env bash
+
+set -e
+
+SFF_IP=$1
+SFF_HEX=$(printf '%02X' ${SFF_IP//./ })
+SFF_HEX=0x$SFF_HEX
+sw=$(sudo ovs-vsctl show | egrep -E 'Bridge.*sw' | awk '{print $2}' | sed -e 's/^"//'  -e 's/"$//')
+
+if [ $sw = "sw3" ] || [ $sw = "sw5" ] ; then
+    # delete NORMAL, if present
+    sudo ovs-ofctl --strict del-flows $sw priority=0
+    sudo ovs-ofctl add-flow $sw "priority=1000,nsi=255 actions=move:NXM_NX_NSH_C1[]->NXM_NX_NSH_C1[],move:NXM_NX_NSH_C2[]->NXM_NX_NSH_C2[],move:NXM_NX_TUN_ID[0..31]->NXM_NX_TUN_ID[0..31],load:$SFF_HEX->NXM_NX_TUN_IPV4_DST[],set_nsi:254,IN_PORT" -OOpenFlow13
+    sudo ovs-ofctl add-flow $sw "priority=1000,nsi=254 actions=move:NXM_NX_NSH_C1[]->NXM_NX_NSH_C1[],move:NXM_NX_NSH_C2[]->NXM_NX_NSH_C2[],move:NXM_NX_TUN_ID[0..31]->NXM_NX_TUN_ID[0..31],load:$SFF_HEX->NXM_NX_TUN_IPV4_DST[],set_nsi:253,IN_PORT" -OOpenFlow13
+else
+    echo "Invalid SF for this demo";
+    exit
+fi
diff --git a/csit/suites/groupbasedpolicy/GBPSFC/6-node/demo-symmetric-chain/010_set_odl.robot b/csit/suites/groupbasedpolicy/GBPSFC/6-node/demo-symmetric-chain/010_set_odl.robot
deleted file mode 100644 (file)
index 064adb6..0000000
+++ /dev/null
@@ -1,77 +0,0 @@
-*** Settings ***
-Documentation     Test suite for setting up infrastructure for demo-symmetric-chain
-Suite Setup       Create Session    session    http://${CONTROLLER}:${RESTCONFPORT}    auth=${AUTH}    headers=${HEADERS}
-Suite Teardown    Delete All Sessions
-Library           RequestsLibrary
-Library           OperatingSystem
-Variables         ../../../../../variables/Variables.py
-Resource          ../../../../../libraries/Utils.robot
-Resource          ../Variables.robot
-
-*** Variables ***
-${GBP_TENANT_ID}    f5c7d344-d1c7-4208-8531-2c2693657e12
-${TENANT_PATH}    /restconf/config/policy:tenants/tenant/${GBP_TENANT_ID}
-${TENANT_FILE}    ${CURDIR}/../../../../../variables/gbp/demo-symmetric-chain/tenants.json
-${TUNNELS_PATH}    /restconf/config/opendaylight-inventory:nodes
-${TUNNELS_FILE}    ${CURDIR}/../../../../../variables/gbp/demo-symmetric-chain/tunnels.json
-${ENDPOINTS_PATH}    /restconf/operations/endpoint:register-endpoint
-${SF_PATH}        /restconf/config/service-function:service-functions
-${SF_FILE}        ${CURDIR}/../../../../../variables/gbp/demo-symmetric-chain/service_functions.json
-${SFF_PATH}       /restconf/config/service-function-forwarder:service-function-forwarders
-${SFF_FILE}       ${CURDIR}/../../../../../variables/gbp/demo-symmetric-chain/service_function_forwarders.json
-${SFC_PATH}       /restconf/config/service-function-chain:service-function-chains
-${SFC_FILE}       ${CURDIR}/../../../../../variables/gbp/demo-symmetric-chain/service_function_chains.json
-${SFP_PATH}       /restconf/config/service-function-path:service-function-paths
-${SFP_FILE}       ${CURDIR}/../../../../../variables/gbp/demo-symmetric-chain/service_function_paths.json
-${h35_2_FILE}     ${CURDIR}/../../../../../variables/gbp/demo-symmetric-chain/vethl-h35_2.json
-${h35_3_FILE}     ${CURDIR}/../../../../../variables/gbp/demo-symmetric-chain/vethl-h35_3.json
-${h35_4_FILE}     ${CURDIR}/../../../../../variables/gbp/demo-symmetric-chain/vethl-h35_4.json
-${h35_5_FILE}     ${CURDIR}/../../../../../variables/gbp/demo-symmetric-chain/vethl-h35_5.json
-${h36_2_FILE}     ${CURDIR}/../../../../../variables/gbp/demo-symmetric-chain/vethl-h36_2.json
-${h36_3_FILE}     ${CURDIR}/../../../../../variables/gbp/demo-symmetric-chain/vethl-h36_3.json
-${h36_4_FILE}     ${CURDIR}/../../../../../variables/gbp/demo-symmetric-chain/vethl-h36_4.json
-${h36_5_FILE}     ${CURDIR}/../../../../../variables/gbp/demo-symmetric-chain/vethl-h36_5.json
-@{ENDPOINT_FILES}    ${h35_2_FILE}    ${h35_3_FILE}    ${h35_4_FILE}    ${h35_5_FILE}    ${h36_2_FILE}    ${h36_3_FILE}    ${h36_4_FILE}
-...               ${h36_5_FILE}
-
-*** Test Cases ***
-Put Service Functions
-    [Documentation]    Register Service Functions to ODL
-    ${json_to_edit}    OperatingSystem.Get File    ${SF_FILE}
-    ${edited_json}    Replace String    ${json_to_edit}    _SF1    ${GBPSFC3}
-    ${edited_json}    Replace String    ${edited_json}    _SF2    ${GBPSFC5}
-    ${resp}    RequestsLibrary.Put    session    ${SF_PATH}    ${edited_json}    ${HEADERS}
-    Should Be Equal As Strings    ${resp.status_code}    200
-
-Put Service Function Forwarders
-    [Documentation]    Register Service Function Forwarders to ODL
-    ${json_to_edit}    OperatingSystem.Get File    ${SFF_FILE}
-    ${edited_json}    Replace String    ${json_to_edit}    _SFF1    ${GBPSFC2}
-    ${edited_json}    Replace String    ${edited_json}    _SFF2    ${GBPSFC4}
-    ${resp}    RequestsLibrary.Put    session    ${SFF_PATH}    ${edited_json}    ${HEADERS}
-    Should Be Equal As Strings    ${resp.status_code}    200
-
-Put Service Function Chains
-    [Documentation]    Register Service Function Chains to ODL
-    Add Elements To URI From File    ${SFC_PATH}    ${SFC_FILE}
-
-Put Service Function Paths
-    [Documentation]    Register Service Function Paths to ODL
-    Add Elements To URI From File    ${SFP_PATH}    ${SFP_FILE}
-
-Put Tunnels
-    [Documentation]    Send tunnel augmentation to ODL
-    ${json_to_edit}    OperatingSystem.Get File    ${TUNNELS_FILE}
-    ${edited_json}    Replace String    ${json_to_edit}    _CLASSIFIER1    ${GBPSFC1}
-    ${edited_json}    Replace String    ${edited_json}    _CLASSIFIER2    ${GBPSFC6}
-    ${resp}    RequestsLibrary.Put    session    ${TUNNELS_PATH}    ${edited_json}    ${HEADERS}
-    Should Be Equal As Strings    ${resp.status_code}    200
-
-Put Tenant
-    [Documentation]    Send Tenant Data to ODL
-    Add Elements To URI From File    ${TENANT_PATH}    ${TENANT_FILE}
-
-Register Endpoints
-    [Documentation]    Endpoints registration
-    : FOR    ${endpoint_file}    IN    @{ENDPOINT_FILES}
-    \    Post Elements To URI From File    ${ENDPOINTS_PATH}    ${endpoint_file}
diff --git a/csit/suites/groupbasedpolicy/GBPSFC/6-node/demo-symmetric-chain/998_clean_odl.robot b/csit/suites/groupbasedpolicy/GBPSFC/6-node/demo-symmetric-chain/998_clean_odl.robot
deleted file mode 100644 (file)
index d5f41ae..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-*** Settings ***
-Documentation     Test suite for cleaning up / unregister infrastructure constructs like endpoints for demo-symmetric-chain
-Suite Setup       Create Session    session    http://${CONTROLLER}:${RESTCONFPORT}    auth=${AUTH}    headers=${HEADERS}
-Suite Teardown    Delete All Sessions
-Library           RequestsLibrary
-Library           OperatingSystem
-Library           Collections
-Library           json
-Variables         ../../../../../variables/Variables.py
-Resource          ../../../../../libraries/Utils.robot
-Resource          ../../../../../libraries/GBP/RestconfUtils.robot
-
-*** Variables ***
-${GBP_TENENT_ID}    f5c7d344-d1c7-4208-8531-2c2693657e12
-${TENANT_PATH}    /restconf/config/policy:tenants/tenant/${GBP_TENENT_ID}
-${TUNNELS_PATH}    /restconf/config/opendaylight-inventory:nodes
-${OPER_ENDPOINTS_PATH}    /restconf/operational/endpoint:endpoints
-${UNREG_ENDPOINTS_PATH}    /restconf/operations/endpoint:unregister-endpoint
-${SF_PATH}        /restconf/config/service-function:service-functions
-${SFF_PATH}       /restconf/config/service-function-forwarder:service-function-forwarders
-${SFC_PATH}       /restconf/config/service-function-chain:service-function-chains
-${SFP_PATH}       /restconf/config/service-function-path:service-function-paths
-${OPER_NODES}     /restconf/operational/opendaylight-inventory:nodes/
-
-*** Test Cases ***
-Delete Service Function Paths
-    [Documentation]    Delete Service Function Paths from ODL
-    [Tags]    GBPSFCTEAR
-    Remove All Elements At URI And Verify    ${SFP_PATH}
-
-Delete Service Function Chains
-    [Documentation]    Delete Service Function Chains from ODL
-    [Tags]    GBPSFCTEAR
-    Remove All Elements At URI And Verify    ${SFC_PATH}
-
-Delete Service Functions
-    [Documentation]    Delete Service Function from ODL
-    [Tags]    GBPSFCTEAR
-    Remove All Elements At URI And Verify    ${SF_PATH}
-
-Delete Service Function Forwarders
-    [Documentation]    Delete Service Function Forwarders from ODL
-    [Tags]    GBPSFCTEAR
-    Remove All Elements At URI And Verify    ${SFF_PATH}
-
-Delete Tunnels
-    [Documentation]    Delete Tenant from ODL
-    [Tags]    GBPSFCTEAR
-    Remove All Elements At URI And Verify    ${TUNNELS_PATH}
-
-Delete Tenant
-    [Documentation]    Delete Tenant from ODL
-    [Tags]    GBPSFCTEAR
-    Remove All Elements At URI And Verify    ${TENANT_PATH}
-
-Unregister Endpoints
-    [Documentation]    Unregister Endpoints Endpoints from ODL
-    [Tags]    GBPSFCTEAR
-    Unregister Endpoints    ${OPER_ENDPOINTS_PATH}
diff --git a/csit/testplans/groupbasedpolicy-6node.txt b/csit/testplans/groupbasedpolicy-6node.txt
new file mode 100644 (file)
index 0000000..9dd759b
--- /dev/null
@@ -0,0 +1,2 @@
+# Place the suites in run order:
+integration/test/csit/suites/groupbasedpolicy/GBPSFC/6-node
\ No newline at end of file
diff --git a/csit/variables/gbp/6node/demo-asymmetric-chain/master/tenants.json b/csit/variables/gbp/6node/demo-asymmetric-chain/master/tenants.json
new file mode 100644 (file)
index 0000000..3450997
--- /dev/null
@@ -0,0 +1,205 @@
+{  
+   "tenant":[  
+      {  
+         "id":"tenant-red",
+         "name":"DockerTenant",
+         "forwarding-context":{  
+            "l2-flood-domain":[  
+               {  
+                  "id":"flood-domain-1",
+                  "parent":"bridge-domain1"
+               },
+               {  
+                  "id":"flood-domain-2",
+                  "parent":"bridge-domain1"
+               }
+            ],
+            "l3-context":[  
+               {  
+                  "id":"l3-context-vrf-red"
+               }
+            ],
+            "l2-bridge-domain":[  
+               {  
+                  "id":"bridge-domain1",
+                  "parent":"l3-context-vrf-red"
+               }
+            ],
+            "subnet":[  
+               {  
+                  "id":"subnet-10.0.36.0/24",
+                  "virtual-router-ip":"10.0.36.1",
+                  "parent":"flood-domain-2",
+                  "ip-prefix":"10.0.36.1/24"
+               },
+               {  
+                  "id":"subnet-10.0.35.0/24",
+                  "virtual-router-ip":"10.0.35.1",
+                  "parent":"flood-domain-1",
+                  "ip-prefix":"10.0.35.1/24"
+               }
+            ]
+         },
+         "policy":{  
+            "endpoint-group":[  
+               {  
+                  "id":"webservers",
+                  "name":"webservers",
+                  "provider-named-selector":[  
+                     {  
+                        "name":"webservers-clients-icmp-http-contract",
+                        "contract":[  
+                           "icmp-http-contract"
+                        ]
+                     }
+                  ]
+               },
+               {  
+                  "id":"clients",
+                  "name":"clients",
+                  "consumer-named-selector":[  
+                     {  
+                        "name":"webservers-clients-icmp-http-contract",
+                        "contract":[  
+                           "icmp-http-contract"
+                        ]
+                     }
+                  ]
+               }
+            ],
+            "subject-feature-instances":{  
+               "classifier-instance":[  
+                  {  
+                     "name":"icmp",
+                     "classifier-definition-id":"Classifier-IP-Protocol",
+                     "parameter-value":[  
+                        {  
+                           "name":"proto",
+                           "int-value":1
+                        }
+                     ]
+                  },
+                  {  
+                     "name":"http-dest",
+                     "classifier-definition-id":"Classifier-L4",
+                     "parameter-value":[  
+                        {  
+                           "int-value":"6",
+                           "name":"proto"
+                        },
+                        {  
+                           "int-value":"80",
+                           "name":"destport"
+                        }
+                     ]
+                  },
+                  {  
+                     "name":"http-src",
+                     "classifier-definition-id":"Classifier-L4",
+                     "parameter-value":[  
+                        {  
+                           "int-value":"6",
+                           "name":"proto"
+                        },
+                        {  
+                           "int-value":"80",
+                           "name":"sourceport"
+                        }
+                     ]
+                  }
+               ],
+               "action-instance":[  
+                  {  
+                     "name":"chain1",
+                     "action-definition-id":"Action-Chain",
+                     "parameter-value":[  
+                        {  
+                           "name":"sfc-chain-name",
+                           "string-value":"SFCGBP"
+                        }
+                     ]
+                  },
+                  {  
+                     "name":"allow1",
+                     "action-definition-id":"Action-Allow"
+                  }
+               ]
+            },
+            "contract":[  
+               {  
+                  "id":"icmp-http-contract",
+                  "subject":[  
+                     {  
+                        "name":"icmp-subject",
+                        "rule":[  
+                           {  
+                              "name":"allow-icmp-rule",
+                              "order":0,
+                              "classifier-ref":[  
+                                 {  
+                                    "name":"icmp",
+                                    "instance-name":"icmp"
+                                 }
+                              ],
+                              "action-ref":[  
+                                 {  
+                                    "name":"allow1",
+                                    "order":0
+                                 }
+                              ]
+                           }
+                        ]
+                     },
+                     {  
+                        "name":"http-subject",
+                        "rule":[  
+                           {  
+                              "name":"http-chain-rule",
+                              "classifier-ref":[  
+                                 {  
+                                    "name":"http-dest",
+                                    "instance-name":"http-dest",
+                                    "direction":"in"
+                                 }
+                              ],
+                              "action-ref":[  
+                                 {  
+                                    "name":"chain1",
+                                    "order":0
+                                 }
+                              ]
+                           },
+                           {  
+                              "name":"http-out-rule",
+                              "classifier-ref":[  
+                                 {  
+                                    "name":"http-src",
+                                    "instance-name":"http-src",
+                                    "direction":"out"
+                                 }
+                              ],
+                              "action-ref":[  
+                                 {  
+                                    "name":"allow1",
+                                    "order":0
+                                 }
+                              ]
+                           }
+                        ]
+                     }
+                  ],
+                  "clause":[  
+                     {  
+                        "name":"icmp-http-clause",
+                        "subject-refs":[  
+                           "icmp-subject",
+                           "http-subject"
+                        ]
+                     }
+                  ]
+               }
+            ]
+         }
+      }
+   ]
+}
\ No newline at end of file
diff --git a/csit/variables/gbp/6node/master/service_function_forwarders.json b/csit/variables/gbp/6node/master/service_function_forwarders.json
new file mode 100644 (file)
index 0000000..eb54237
--- /dev/null
@@ -0,0 +1,80 @@
+{
+   "service-function-forwarders":{
+      "service-function-forwarder":[
+         {
+            "name":"SFF1",
+            "service-node":"OVSDB2",
+            "service-function-forwarder-ovs:ovs-bridge":{
+               "bridge-name":"sw2"
+            },
+            "service-function-dictionary":[
+               {
+                  "name":"firewall-72",
+                  "sff-sf-data-plane-locator":{
+                     "sf-dpl-name":"2",
+                     "sff-dpl-name":"sfc-tun2"
+                  }
+               }
+            ],
+            "sff-data-plane-locator":[
+               {
+                  "name":"sfc-tun2",
+                  "data-plane-locator":{
+                     "transport":"service-locator:vxlan-gpe",
+                     "port":6633,
+                     "ip":"_SFF1"
+                  },
+                  "service-function-forwarder-ovs:ovs-options":{
+                     "remote-ip":"flow",
+                     "dst-port":"6633",
+                     "key":"flow",
+                     "nsp":"flow",
+                     "nsi":"flow",
+                     "nshc1":"flow",
+                     "nshc2":"flow",
+                     "nshc3":"flow",
+                     "nshc4":"flow"
+                  }
+               }
+            ]
+         },
+         {
+            "name":"SFF2",
+            "service-node":"OVSDB2",
+            "service-function-forwarder-ovs:ovs-bridge":{
+               "bridge-name":"sw4"
+            },
+            "service-function-dictionary":[
+               {
+                  "name":"dpi-74",
+                  "sff-sf-data-plane-locator":{
+                     "sf-dpl-name":"3",
+                     "sff-dpl-name":"sfc-tun4"
+                  }
+               }
+            ],
+            "sff-data-plane-locator":[
+               {
+                  "name":"sfc-tun4",
+                  "data-plane-locator":{
+                     "transport":"service-locator:vxlan-gpe",
+                     "port":6633,
+                     "ip":"_SFF2"
+                  },
+                  "service-function-forwarder-ovs:ovs-options":{
+                     "remote-ip":"flow",
+                     "dst-port":"6633",
+                     "key":"flow",
+                     "nsp":"flow",
+                     "nsi":"flow",
+                     "nshc1":"flow",
+                     "nshc2":"flow",
+                     "nshc3":"flow",
+                     "nshc4":"flow"
+                  }
+               }
+            ]
+         }
+      ]
+   }
+}
\ No newline at end of file
diff --git a/csit/variables/gbp/demo-asymmetric-chain/master/tenants.json b/csit/variables/gbp/demo-asymmetric-chain/master/tenants.json
deleted file mode 100644 (file)
index c2100b6..0000000
+++ /dev/null
@@ -1,201 +0,0 @@
-{
-    "tenant": [
-        {
-            "id": "tenant-red",
-            "l2-flood-domain": [
-                {
-                    "id": "flood-domain-1",
-                    "parent": "bridge-domain1"
-                },
-                {
-                    "id": "flood-domain-2",
-                    "parent": "bridge-domain1"
-                }
-            ],
-            "name": "DockerTenant",
-            "l3-context": [
-                {
-                    "id": "l3-context-vrf-red"
-                }
-            ],
-            "l2-bridge-domain": [
-                {
-                    "id": "bridge-domain1",
-                    "parent": "l3-context-vrf-red"
-                }
-            ],
-            "subnet": [
-                {
-                    "id": "subnet-10.0.36.0/24",
-                    "virtual-router-ip": "10.0.36.1",
-                    "parent": "flood-domain-2",
-                    "ip-prefix": "10.0.36.1/24"
-                },
-                {
-                    "id": "subnet-10.0.35.0/24",
-                    "virtual-router-ip": "10.0.35.1",
-                    "parent": "flood-domain-1",
-                    "ip-prefix": "10.0.35.1/24"
-                }
-            ],
-            "endpoint-group": [
-                {
-                    "id": "webservers",
-                    "name": "webservers",
-                    "provider-named-selector": [
-                        {
-                            "name": "webservers-clients-icmp-http-contract",
-                            "contract": [
-                                "icmp-http-contract"
-                            ]
-                        }
-                    ]
-                },
-                {
-                    "id": "clients",
-                    "name": "clients",
-                    "consumer-named-selector": [
-                        {
-                            "name": "webservers-clients-icmp-http-contract",
-                            "contract": [
-                                "icmp-http-contract"
-                            ]
-                        }
-                    ]
-                }
-            ],
-            "subject-feature-instances": {
-                "classifier-instance": [
-                    {
-                        "name": "icmp",
-                        "classifier-definition-id": "Classifier-IP-Protocol",
-                        "parameter-value": [
-                            {
-                                "name": "proto",
-                                "int-value": 1
-                            }
-                        ]
-                    },
-                    {
-                        "name": "http-dest",
-                        "classifier-definition-id": "Classifier-L4",
-                        "parameter-value": [
-                            {
-                                "int-value": "6",
-                                "name": "proto"
-                            },
-                            {
-                                "int-value": "80",
-                                "name": "destport"
-                            }
-                        ]
-                    },
-                    {
-                        "name": "http-src",
-                        "classifier-definition-id": "Classifier-L4",
-                        "parameter-value": [
-                            {
-                                "int-value": "6",
-                                "name": "proto"
-                            },
-                            {
-                                "int-value": "80",
-                                "name": "sourceport"
-                            }
-                        ]
-                    }
-                ],
-                "action-instance": [
-                    {
-                        "name": "chain1",
-                        "action-definition-id": "Action-Chain",
-                        "parameter-value": [
-                            {
-                                "name": "sfc-chain-name",
-                                "string-value": "SFCGBP"
-                            }
-                        ]
-                    },
-                    {
-                        "name": "allow1",
-                        "action-definition-id": "Action-Allow"
-                    }
-                ]
-            },
-            "contract": [
-                {
-                    "id": "icmp-http-contract",
-                    "subject": [
-                        {
-                            "name": "icmp-subject",
-                            "rule": [
-                                {
-                                    "name": "allow-icmp-rule",
-                                    "order": 0,
-                                    "classifier-ref": [
-                                        {
-                                            "name": "icmp",
-                                            "instance-name": "icmp"
-                                        }
-                                    ],
-                                    "action-ref": [
-                                        {
-                                            "name": "allow1",
-                                            "order": 0
-                                        }
-                                    ]
-                                }
-                            ]
-                        },
-                        {
-                            "name": "http-subject",
-                            "rule": [
-                                {
-                                    "name": "http-chain-rule",
-                                    "classifier-ref": [
-                                        {
-                                            "name": "http-dest",
-                                            "instance-name": "http-dest",
-                                            "direction": "in"
-                                        }
-                                    ],
-                                    "action-ref": [
-                                        {
-                                            "name": "chain1",
-                                            "order": 0
-                                        }
-                                    ]
-                                },
-                                {
-                                    "name": "http-out-rule",
-                                    "classifier-ref": [
-                                        {
-                                            "name": "http-src",
-                                            "instance-name": "http-src",
-                                            "direction": "out"
-                                        }
-                                    ],
-                                    "action-ref": [
-                                        {
-                                            "name": "allow1",
-                                            "order": 0
-                                        }
-                                    ]
-                                }
-                            ]
-                        }
-                    ],
-                    "clause": [
-                        {
-                            "name": "icmp-http-clause",
-                            "subject-refs": [
-                                "icmp-subject",
-                                "http-subject"
-                            ]
-                        }
-                    ]
-                }
-            ]
-        }
-    ]
-}
diff --git a/csit/variables/gbp/demo-symmetric-chain/service_function_forwarders.json b/csit/variables/gbp/demo-symmetric-chain/service_function_forwarders.json
deleted file mode 100644 (file)
index 1da7b48..0000000
+++ /dev/null
@@ -1,84 +0,0 @@
-{
-    "service-function-forwarders": {
-        "service-function-forwarder": [
-            {
-                "name": "SFF1",
-                "service-node": "OVSDB2",
-                "service-function-forwarder-ovs:ovs-bridge": {
-                    "bridge-name": "sw2"
-                },
-                "service-function-dictionary": [
-                    {
-                        "name": "firewall-72",
-                        "type": "service-function-type:firewall",
-                        "sff-sf-data-plane-locator": {
-                            "port": 6633,
-                            "ip": "_SFF1",
-                            "transport": "service-locator:vxlan-gpe"
-                        }
-                    }
-                ],
-                "sff-data-plane-locator": [
-                    {
-                        "name": "sfc-tun2",
-                        "data-plane-locator": {
-                            "transport": "service-locator:vxlan-gpe",
-                            "port": 6633,
-                            "ip": "_SFF1"
-                        },
-                        "service-function-forwarder-ovs:ovs-options": {
-                            "remote-ip": "flow",
-                            "dst-port": "6633",
-                            "key": "flow",
-                            "nsp": "flow",
-                            "nsi": "flow",
-                            "nshc1": "flow",
-                            "nshc2": "flow",
-                            "nshc3": "flow",
-                            "nshc4": "flow"
-                        }
-                    }
-                ]
-            },
-            {
-                "name": "SFF2",
-                "service-node": "OVSDB2",
-                "service-function-forwarder-ovs:ovs-bridge": {
-                    "bridge-name": "sw4"
-                },
-                "service-function-dictionary": [
-                    {
-                        "name": "dpi-74",
-                        "type": "service-function-type:dpi",
-                        "sff-sf-data-plane-locator": {
-                            "port": 6633,
-                            "ip": "_SFF2",
-                            "transport": "service-locator:vxlan-gpe"
-                        }
-                    }
-                ],
-                "sff-data-plane-locator": [
-                    {
-                        "name": "sfc-tun4",
-                        "data-plane-locator": {
-                            "transport": "service-locator:vxlan-gpe",
-                            "port": 6633,
-                            "ip": "_SFF2"
-                        },
-                        "service-function-forwarder-ovs:ovs-options": {
-                            "remote-ip": "flow",
-                            "dst-port": "6633",
-                            "key": "flow",
-                            "nsp": "flow",
-                            "nsi": "flow",
-                            "nshc1": "flow",
-                            "nshc2": "flow",
-                            "nshc3": "flow",
-                            "nshc4": "flow"
-                        }
-                    }
-                ]
-            }
-        ]
-    }
-}
\ No newline at end of file
diff --git a/csit/variables/gbp/demo-symmetric-chain/service_functions.json b/csit/variables/gbp/demo-symmetric-chain/service_functions.json
deleted file mode 100644 (file)
index f3c0d76..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-{
-    "service-functions": {
-        "service-function": [
-            {
-                "name": "firewall-72",
-                "ip-mgmt-address": "_SF1",
-                "type": "service-function-type:firewall",
-                "nsh-aware": "true",
-                "sf-data-plane-locator": [
-                    {
-                        "name": "2",
-                        "port": 6633,
-                        "ip": "_SF1",
-                        "transport": "service-locator:vxlan-gpe",
-                        "service-function-forwarder": "SFF1"
-                    }
-                ]
-            },
-            {
-                "name": "dpi-74",
-                "ip-mgmt-address": "_SF2",
-                "type": "service-function-type:dpi",
-                "nsh-aware": "true",
-                "sf-data-plane-locator": [
-                    {
-                        "name": "3",
-                        "port": 6633,
-                        "ip": "_SF2",
-                        "transport": "service-locator:vxlan-gpe",
-                        "service-function-forwarder": "SFF2"
-                    }
-                ]
-            }
-        ]
-    }
-}
\ No newline at end of file
diff --git a/csit/variables/gbp/demo-symmetric-chain/tunnels.json b/csit/variables/gbp/demo-symmetric-chain/tunnels.json
deleted file mode 100644 (file)
index c7a2181..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-{
-    "opendaylight-inventory:nodes": {
-        "node": [
-            {
-                "id": "openflow:1",
-                "ofoverlay:tunnel": [
-                    {
-                        "tunnel-type": "overlay:tunnel-type-vxlan-gpe",
-                        "node-connector-id": "openflow:1:1",
-                        "ip": "_CLASSIFIER1",
-                        "port": 6633
-                    },
-                    {
-                        "tunnel-type": "overlay:tunnel-type-vxlan",
-                        "node-connector-id": "openflow:1:2",
-                        "ip": "_CLASSIFIER1",
-                        "port": 4789
-                    }
-                ]
-            },
-            {
-                "id": "openflow:6",
-                "ofoverlay:tunnel": [
-                    {
-                        "tunnel-type": "overlay:tunnel-type-vxlan-gpe",
-                        "node-connector-id": "openflow:6:1",
-                        "ip": "_CLASSIFIER2",
-                        "port": 6633
-                    },
-                    {
-                        "tunnel-type": "overlay:tunnel-type-vxlan",
-                        "node-connector-id": "openflow:6:2",
-                        "ip": "_CLASSIFIER2",
-                        "port": 4789
-                    }
-                ]
-            }
-        ]
-    }
-}