summaryrefslogtreecommitdiffstats
path: root/docs/index.rst
AgeCommit message (Expand)AuthorFilesLines
2019-01-08Adding HomeNoemi Wagner1-0/+1
2018-12-18Landing page restructuredNoemi Wagner1-17/+32
2018-12-05New landing page structureNoemi Wagner1-10/+36
2018-11-30Remove Beijing referencesEric Debeau1-3/+4
2018-11-23Removal of index and search from the landing pageGergely Csatari1-8/+0
2018-09-13Switch theme and add report issueRich Bennett1-2/+2
2018-09-01Cherry pick beijing improvements to masterRich Bennett1-5/+3
2018-08-31DOC - Updating location of the VNFRQTSBozawglanian, Hagop (hb755d)1-0/+1
2018-06-14Add description of master an
*** 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           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}