onap on kubernetes source files
[oom.git] / kubernetes / config / docker / init / src / config / robot / robot / resources / openstack / neutron_interface.robot
diff --git a/kubernetes/config/docker/init/src/config/robot/robot/resources/openstack/neutron_interface.robot b/kubernetes/config/docker/init/src/config/robot/robot/resources/openstack/neutron_interface.robot
new file mode 100644 (file)
index 0000000..bdb64b9
--- /dev/null
@@ -0,0 +1,128 @@
+*** Settings ***
+Documentation     The main interface for interacting with Openstack. It handles low level stuff like managing the authtoken and Openstack required fields
+Library           OpenstackLibrary
+Library              RequestsLibrary
+Library                  UUID
+Library           OperatingSystem
+Library           Collections
+Resource    ../global_properties.robot
+Resource    ../json_templater.robot
+Resource    openstack_common.robot
+
+*** Variables ***
+${OPENSTACK_NEUTRON_API_VERSION}    /v2.0
+${OPENSTACK_NEUTRON_NETWORK_PATH}    /networks
+${OPENSTACK_NEUTRON_NETWORK_ADD_BODY_FILE}    robot/assets/templates/neutron_add_network.template
+${OPENSTACK_NEUTRON_SUBNET_PATH}    /subnets
+${OPENSTACK_NEUTRON_SUBNET_ADD_BODY_FILE}    robot/assets/templates/neutron_add_subnet.template
+${OPENSTACK_NEUTRON_PORT_PATH}    /ports
+
+*** Keywords ***
+Get Openstack Network
+    [Documentation]    Runs an Openstack Request and returns the network info
+    [Arguments]    ${alias}    ${network_id}
+    ${resp}=    Internal Get Openstack    ${alias}    ${GLOBAL_OPENSTACK_NEUTRON_SERVICE_TYPE}    ${OPENSTACK_NEUTRON_NETWORK_PATH}    /${network_id}
+    [Return]    ${resp.json()}
+
+Get Openstack Networks
+    [Documentation]    Runs an Openstack Request and returns the network info
+    [Arguments]    ${alias}
+    ${resp}=    Internal Get Openstack    ${alias}    ${GLOBAL_OPENSTACK_NEUTRON_SERVICE_TYPE}    ${OPENSTACK_NEUTRON_NETWORK_PATH}
+    [Return]    ${resp.json()}
+
+Get Openstack Subnets
+    [Documentation]    Runs an Openstack Request and returns the network info
+    [Arguments]    ${alias}
+    ${resp}=    Internal Get Openstack    ${alias}    ${GLOBAL_OPENSTACK_NEUTRON_SERVICE_TYPE}    ${OPENSTACK_NEUTRON_SUBNET_PATH}
+    [Return]    ${resp.json()}
+
+Get Openstack Ports
+    [Documentation]    Runs an Openstack Request and returns the network info
+    [Arguments]    ${alias}
+    ${resp}=    Internal Get Openstack    ${alias}    ${GLOBAL_OPENSTACK_NEUTRON_SERVICE_TYPE}    ${OPENSTACK_NEUTRON_PORT_PATH}
+    [Return]    ${resp.json()}
+
+Add Openstack Network
+    [Documentation]    Runs an Openstack Request to add a network and returns that network id of the created network
+    [Arguments]    ${alias}    ${name}
+    ${data_template}=    OperatingSystem.Get File    ${OPENSTACK_NEUTRON_NETWORK_ADD_BODY_FILE}
+    ${arguments}=    Create Dictionary    name=${name}
+    ${data}=   Fill JSON Template    ${data_template}    ${arguments}
+    ${resp}=    Internal Post Openstack    ${alias}    ${GLOBAL_OPENSTACK_NEUTRON_SERVICE_TYPE}    ${OPENSTACK_NEUTRON_NETWORK_PATH}    data_path=    data=${data}
+    Should Be Equal As Strings    201  ${resp.status_code}
+    [Return]    ${resp.json()['network']['id']}
+
+Delete Openstack Network
+    [Documentation]    Runs an Openstack Request to delete a network
+    [Arguments]    ${alias}    ${network_id}
+    ${resp}=    Internal Delete Openstack    ${alias}    ${GLOBAL_OPENSTACK_NEUTRON_SERVICE_TYPE}    ${OPENSTACK_NEUTRON_NETWORK_PATH}   /${network_id}
+    ${status_string}=    Convert To String    ${resp.status_code}
+    Should Match Regexp    ${status_string}    ^(204|200)$
+    [Return]    ${resp.text}
+
+Add Openstack Network With Subnet If Not Exists
+    [Documentation]    Runs an Openstack Request to add a network and returns that network id of the created network
+    [Arguments]    ${alias}    ${name}    ${cidr}
+    ${network}=    Get Openstack Subnet By Name    ${alias}    ${name}   ${cidr}
+    ${pass}    ${v}=    Run Keyword and Ignore Error    Dictionary Should Contain Key    ${network}    id
+    Run Keyword If    '${pass}' == 'FAIL'    Add Openstack Network With Subnet    ${alias}    ${name}    ${cidr}
+    ${network}=    Get Openstack Subnet By Name    ${alias}    ${name}   ${cidr}
+    ${network_id}=     Get From Dictionary    ${network}    id
+    [Return]     ${network_id}
+
+
+Add Openstack Network With Subnet
+    [Documentation]    Runs an Openstack Request to add a network and returns that network id of the created network
+    [Arguments]    ${alias}    ${name}    ${cidr}
+    ${network_id}=    Add Openstack Network    ${alias}    ${name}
+    ${data_template}=    OperatingSystem.Get File    ${OPENSTACK_NEUTRON_SUBNET_ADD_BODY_FILE}
+    ${arguments}=    Create Dictionary    network_id=${network_id}    cidr=${cidr}    subnet_name=${name}
+    ${data}=   Fill JSON Template    ${data_template}    ${arguments}
+    ${resp}=    Internal Post Openstack    ${alias}    ${GLOBAL_OPENSTACK_NEUTRON_SERVICE_TYPE}    ${OPENSTACK_NEUTRON_SUBNET_PATH}    data_path=    data=${data}
+    Should Be Equal As Strings    201  ${resp.status_code}
+    [Return]     ${network_id}
+
+Get Openstack Subnet By Name
+    [Documentation]    Retrieve the subnet from openstack by it's name.
+    [Arguments]    ${alias}    ${network_name}    ${network_cidr}
+    ${resp}=    Get Openstack Subnets    ${alias}
+    @{list}=    Get From Dictionary    ${resp}    subnets
+    ${returnnet}=    Set Variable
+    :for    ${net}    in    @{list}
+    \    ${name}=   Get From Dictionary    ${net}    name
+    \    ${cidr}=   Get From Dictionary    ${net}    cidr
+    \    ${returnnet}=    Set Variable    ${net}
+    \    Exit For Loop If    '${name}'=='${network_name}' and '${cidr}'=='${network_cidr}'
+    \    ${returnnet}=    Create DIctionary
+    [Return]    ${returnnet}
+
+Get Openstack IP By Name
+    [Arguments]    ${alias}    ${network_name}    ${cidr}    ${ip}
+    ${ports}=    Get Openstack Ports For Subnet    ${alias}    ${network_name}    ${cidr}
+    Log    ${ports}
+    :for    ${port}   in   @{ports}
+    \    Return From Keyword If    '${port['fixed_ips'][0]['ip_address']}' == '${ip}'    ${port}
+    [Return]    None
+
+Get Openstack Ports For Subnet
+    [Arguments]    ${alias}    ${network_name}    ${cidr}
+    ${net}=    Get Openstack Subnet By Name    ${alias}    ${network_name}    ${cidr}
+    ${ports}=    Get Openstack Ports     ${alias}
+    ${net_ports}=    Create List
+    :for    ${port}    in    @{ports['ports']}
+    \    Run Keyword If   '${net['network_id']}' == '${port['network_id']}'    Append To List    ${net_ports}   ${port}
+    [Return]   ${net_ports}
+
+Get Openstack Port By Id
+    [Arguments]    ${alias}    ${port_id}
+    ${resp}=    Internal Get Openstack    ${alias}    ${GLOBAL_OPENSTACK_NEUTRON_SERVICE_TYPE}    ${OPENSTACK_NEUTRON_PORT_PATH}/${port_id}
+    [Return]    ${resp}
+
+
+Delete Openstack Port
+    [Arguments]    ${alias}    ${port_id}
+    ${resp}=    Internal Delete Openstack    ${alias}    ${GLOBAL_OPENSTACK_NEUTRON_SERVICE_TYPE}    ${OPENSTACK_NEUTRON_PORT_PATH}      /${port_id}
+    ${status_string}=    Convert To String    ${resp.status_code}
+    Should Match Regexp    ${status_string}    ^(204|200)$
+    [Return]    ${resp.text}
+