Patch ODL scenario to support joid (different keystone and neutron API IP)
authorMorgan Richomme <morgan.richomme@orange.com>
Tue, 26 Jan 2016 14:03:44 +0000 (15:03 +0100)
committerMorgan Richomme <morgan.richomme@orange.com>
Tue, 26 Jan 2016 14:27:36 +0000 (15:27 +0100)
JIRA: FUNCTEST-124

Change-Id: I84834fcb78e652f3b39696f0e17bf54cb5804559
Signed-off-by: Morgan Richomme <morgan.richomme@orange.com>
docker/run_tests.sh
testcases/Controllers/ODL/CI/custom_tests/neutron/010__networks.robot [new file with mode: 0644]
testcases/Controllers/ODL/CI/custom_tests/neutron/020__subnets.robot [new file with mode: 0644]
testcases/Controllers/ODL/CI/custom_tests/neutron/030__ports.robot [new file with mode: 0644]
testcases/Controllers/ODL/CI/custom_tests/neutron/040__delete_ports.txt
testcases/Controllers/ODL/CI/custom_tests/neutron/050__delete_subnets.txt
testcases/Controllers/ODL/CI/custom_tests/neutron/060__delete_networks.txt
testcases/Controllers/ODL/CI/start_tests.sh

index 50a1296..85076a5 100755 (executable)
@@ -51,7 +51,9 @@ function clean_openstack(){
 }
 
 function odl_tests(){
-    neutron_ip=$(keystone catalog --service identity | grep publicURL | cut -f3 -d"/" | cut -f1 -d":")
+    keystone_ip=$(keystone catalog --service identity | grep publicURL | cut -f3 -d"/" | cut -f1 -d":")
+    # historically most of the installers use the same IP for neutron and keystone API
+    neutron_ip=keystone_ip
     odl_ip=$(keystone catalog --service network | grep publicURL | cut -f3 -d"/" | cut -f1 -d":")
     usr_name=$(env | grep OS | grep OS_USERNAME | cut -f2 -d'=')
     password=$(env | grep OS | grep OS_PASSWORD | cut -f2 -d'=')
@@ -61,6 +63,9 @@ function odl_tests(){
     elif [ $INSTALLER_TYPE == "apex" ]; then
         :
     elif [ $INSTALLER_TYPE == "joid" ]; then
+        odl_ip=$(env | grep ODL_CONTROLLER | cut -f2 -d'=')
+        neutron_ip=$(keystone catalog --service network | grep publicURL | cut -f3 -d"/" | cut -f1 -d":")
+        odl_port=8080
         :
     elif [ $INSTALLER_TYPE == "compass" ]; then
         :
@@ -90,7 +95,7 @@ function run_test(){
         "odl")
             info "Running ODL test..."
             odl_tests
-            ODL_PORT=$odl_port ODL_IP=$odl_ip NEUTRON_IP=$neutron_ip USR_NAME=$usr_name PASS=$password \
+            ODL_PORT=$odl_port ODL_IP=$odl_ip KEYSTONE_IP=$keystone_ip NEUTRON_IP=$neutron_ip USR_NAME=$usr_name PASS=$password \
                 ${FUNCTEST_REPO_DIR}/testcases/Controllers/ODL/CI/start_tests.sh
 
             # push results to the DB in case of CI
diff --git a/testcases/Controllers/ODL/CI/custom_tests/neutron/010__networks.robot b/testcases/Controllers/ODL/CI/custom_tests/neutron/010__networks.robot
new file mode 100644 (file)
index 0000000..583a6a1
--- /dev/null
@@ -0,0 +1,56 @@
+*** Settings ***
+Documentation     Checking Network created in OpenStack are pushed to OpenDaylight
+Suite Setup       Create Session    OSSession    http://${NEUTRON}:9696    headers=${X-AUTH}
+Suite Teardown    Delete All Sessions
+Library           SSHLibrary
+Library           Collections
+Library           OperatingSystem
+Library           RequestsLibrary
+Library           ../../../libraries/Common.py
+Variables         ../../../variables/Variables.py
+
+*** Variables ***
+${ODLREST}        /controller/nb/v2/neutron/networks
+${OSREST}         /v2.0/networks
+${postNet}        {"network":{"name":"odl_network","admin_state_up":true}}
+
+*** Test Cases ***
+Check OpenStack Networks
+    [Documentation]    Checking OpenStack Neutron for known networks
+    [Tags]    Network Neutron OpenStack
+    Log    ${X-AUTH}
+    ${resp}    get    OSSession    ${OSREST}
+    Should be Equal As Strings    ${resp.status_code}    200
+    ${OSResult}    To Json    ${resp.content}
+    Set Suite Variable    ${OSResult}
+    Log    ${OSResult}
+
+Check OpenDaylight Networks
+    [Documentation]    Checking OpenDaylight Neutron API for Known Networks
+    [Tags]    Network Neutron OpenDaylight
+    Create Session    ODLSession    http://${CONTROLLER}:${PORT}    headers=${HEADERS}    auth=${AUTH}
+    ${resp}    get    ODLSession    ${ODLREST}
+    Should be Equal As Strings    ${resp.status_code}    200
+    ${ODLResult}    To Json    ${resp.content}
+    Set Suite Variable    ${ODLResult}
+    Log    ${ODLResult}
+
+Create Network
+    [Documentation]    Create new network in OpenStack
+    [Tags]    Create Network OpenStack Neutron
+    Log    ${postNet}
+    ${resp}    post    OSSession    ${OSREST}    data=${postNet}
+    Should be Equal As Strings    ${resp.status_code}    201
+    ${result}    To JSON    ${resp.content}
+    ${result}    Get From Dictionary    ${result}    network
+    ${NETID}    Get From Dictionary    ${result}    id
+    Log    ${result}
+    Log    ${NETID}
+    Set Global Variable    ${NETID}
+    sleep    2
+
+Check Network
+    [Documentation]    Check Network created in OpenDaylight
+    [Tags]    Check    Network OpenDaylight
+    ${resp}    get    ODLSession    ${ODLREST}/${NetID}
+    Should be Equal As Strings    ${resp.status_code}    200
diff --git a/testcases/Controllers/ODL/CI/custom_tests/neutron/020__subnets.robot b/testcases/Controllers/ODL/CI/custom_tests/neutron/020__subnets.robot
new file mode 100644 (file)
index 0000000..5f5b824
--- /dev/null
@@ -0,0 +1,56 @@
+*** Settings ***
+Documentation     Checking Subnets created in OpenStack are pushed to OpenDaylight
+Suite Setup       Create Session    OSSession    http://${NEUTRON}:9696    headers=${X-AUTH}
+Suite Teardown    Delete All Sessions
+Library           SSHLibrary
+Library           Collections
+Library           OperatingSystem
+Library           RequestsLibrary
+Library           ../../../libraries/Common.py
+Variables         ../../../variables/Variables.py
+
+*** Variables ***
+${ODLREST}        /controller/nb/v2/neutron/subnets
+${OSREST}         /v2.0/subnets
+${data}           {"subnet":{"network_id":"${NETID}","ip_version":4,"cidr":"172.16.64.0/24","allocation_pools":[{"start":"172.16.64.20","end":"172.16.64.120"}]}}
+
+*** Test Cases ***
+Check OpenStack Subnets
+    [Documentation]    Checking OpenStack Neutron for known Subnets
+    [Tags]    Subnets Neutron OpenStack
+    Log    ${X-AUTH}
+    ${resp}    get    OSSession    ${OSREST}
+    Should be Equal As Strings    ${resp.status_code}    200
+    ${OSResult}    To Json    ${resp.content}
+    Set Suite Variable    ${OSResult}
+    Log    ${OSResult}
+
+Check OpenDaylight subnets
+    [Documentation]    Checking OpenDaylight Neutron API for Known Subnets
+    [Tags]    Subnets Neutron OpenDaylight
+    Create Session    ODLSession    http://${CONTROLLER}:${PORT}    headers=${HEADERS}    auth=${AUTH}
+    ${resp}    get    ODLSession    ${ODLREST}
+    Should be Equal As Strings    ${resp.status_code}    200
+    ${ODLResult}    To Json    ${resp.content}
+    Set Suite Variable    ${ODLResult}
+    Log    ${ODLResult}
+
+Create New subnet
+    [Documentation]    Create new subnet in OpenStack
+    [Tags]    Create Subnet OpenStack Neutron
+    Log    ${data}
+    ${resp}    post    OSSession    ${OSREST}    data=${data}
+    Should be Equal As Strings    ${resp.status_code}    201
+    ${result}    To JSON    ${resp.content}
+    ${result}    Get From Dictionary    ${result}    subnet
+    ${SUBNETID}    Get From Dictionary    ${result}    id
+    Log    ${result}
+    Log    ${SUBNETID}
+    Set Global Variable    ${SUBNETID}
+    sleep    2
+
+Check New subnet
+    [Documentation]    Check new subnet created in OpenDaylight
+    [Tags]    Check    subnet OpenDaylight
+    ${resp}    get    ODLSession    ${ODLREST}/${SUBNETID}
+    Should be Equal As Strings    ${resp.status_code}    200
diff --git a/testcases/Controllers/ODL/CI/custom_tests/neutron/030__ports.robot b/testcases/Controllers/ODL/CI/custom_tests/neutron/030__ports.robot
new file mode 100644 (file)
index 0000000..8b75733
--- /dev/null
@@ -0,0 +1,56 @@
+*** Settings ***
+Documentation     Checking Port created in OpenStack are pushed to OpenDaylight
+Suite Setup       Create Session    OSSession    http://${NEUTRON}:9696    headers=${X-AUTH}
+Suite Teardown    Delete All Sessions
+Library           SSHLibrary
+Library           Collections
+Library           OperatingSystem
+Library           RequestsLibrary
+Library           ../../../libraries/Common.py
+Variables         ../../../variables/Variables.py
+
+*** Variables ***
+${ODLREST}        /controller/nb/v2/neutron/ports
+${OSREST}         /v2.0/ports
+${data}           {"port":{"network_id":"${NETID}","admin_state_up": true}}
+
+*** Test Cases ***
+Check OpenStack ports
+    [Documentation]    Checking OpenStack Neutron for known ports
+    [Tags]    Ports Neutron OpenStack
+    Log    ${X-AUTH}
+    ${resp}    get    OSSession    ${OSREST}
+    Should be Equal As Strings    ${resp.status_code}    200
+    ${OSResult}    To Json    ${resp.content}
+    Set Suite Variable    ${OSResult}
+    Log    ${OSResult}
+
+Check OpenDaylight ports
+    [Documentation]    Checking OpenDaylight Neutron API for Known Ports
+    [Tags]    Ports Neutron OpenDaylight
+    Create Session    ODLSession    http://${CONTROLLER}:${PORT}    headers=${HEADERS}    auth=${AUTH}
+    ${resp}    get    ODLSession    ${ODLREST}
+    Should be Equal As Strings    ${resp.status_code}    200
+    ${ODLResult}    To Json    ${resp.content}
+    Set Suite Variable    ${ODLResult}
+    Log    ${ODLResult}
+
+Create New Port
+    [Documentation]    Create new port in OpenStack
+    [Tags]    Create port OpenStack Neutron
+    Log    ${data}
+    ${resp}    post    OSSession    ${OSREST}    data=${data}
+    Should be Equal As Strings    ${resp.status_code}    201
+    ${result}    To JSON    ${resp.content}
+    ${result}    Get From Dictionary    ${result}    port
+    ${PORTID}    Get From Dictionary    ${result}    id
+    Log    ${result}
+    Log    ${PORTID}
+    Set Global Variable    ${PORTID}
+    sleep    2
+
+Check New Port
+    [Documentation]    Check new subnet created in OpenDaylight
+    [Tags]    Check subnet OpenDaylight
+    ${resp}    get    ODLSession    ${ODLREST}/${PORTID}
+    Should be Equal As Strings    ${resp.status_code}    200
index 02c90c3..f102988 100644 (file)
@@ -1,6 +1,6 @@
 *** Settings ***
 Documentation     Checking Port deleted in OpenStack are deleted also in OpenDaylight
-Suite Setup      Create Session    OSSession     http://${OPENSTACK}:9696    headers=${X-AUTH}
+Suite Setup      Create Session    OSSession     http://${NEUTRON}:9696    headers=${X-AUTH}
 Suite Teardown    Delete All Sessions
 Library           SSHLibrary
 Library           Collections
index 4121c98..fb61982 100644 (file)
@@ -1,6 +1,6 @@
 *** Settings ***
 Documentation     Checking Subnets deleted in OpenStack are deleted also in OpenDaylight
-Suite Setup      Create Session    OSSession     http://${OPENSTACK}:9696    headers=${X-AUTH}
+Suite Setup      Create Session    OSSession     http://${NEUTRON}:9696    headers=${X-AUTH}
 Suite Teardown    Delete All Sessions
 Library           SSHLibrary
 Library           Collections
index fc823fa..528fbfc 100644 (file)
@@ -1,6 +1,6 @@
 *** Settings ***
 Documentation     Checking Network deleted in OpenStack are deleted also in OpenDaylight
-Suite Setup      Create Session    OSSession     http://${OPENSTACK}:9696    headers=${X-AUTH}
+Suite Setup      Create Session    OSSession     http://${NEUTRON}:9696    headers=${X-AUTH}
 Suite Teardown    Delete All Sessions
 Library           SSHLibrary
 Library           Collections
index 4d60022..5b45a2e 100755 (executable)
@@ -51,6 +51,7 @@ ODL_PORT=${ODL_PORT:-8081}
 USR_NAME=${USR_NAME:-'neutron'}
 PASS=${PASS:-'octopus'}
 NEUTRON_IP=${NEUTRON_IP:-192.168.0.68}
+KEYSTONE_IP=${NEUTRON_IP:-192.168.0.69}
 set +x
 
 init_file=${REPO_DIR}/test/csit/suites/openstack/neutron/__init__.robot
@@ -80,7 +81,7 @@ do
 
     ((test_num++))
     echo -e "${light_green}Starting test: $line ${nc}"
-    pybot -v OPENSTACK:${NEUTRON_IP} -v PORT:${ODL_PORT} -v CONTROLLER:${ODL_IP} ${REPO_DIR}/$line
+    pybot -v OPENSTACK:${KEYSTONE_IP} -v NEUTRON:${NEUTRON_IP} -v PORT:${ODL_PORT} -v CONTROLLER:${ODL_IP} ${REPO_DIR}/$line
     mkdir -p $RESULTS_DIR/logs/${test_num}
     mv log.html $RESULTS_DIR/logs/${test_num}/
     mv report.html $RESULTS_DIR/logs/${test_num}/