replace aai, closeloop, sdc with jinja
[testsuite.git] / robot / resources / openstack / neutron_interface.robot
1 *** Settings ***
2 Documentation     The main interface for interacting with Openstack. It handles low level stuff like managing the authtoken and Openstack required fields
3 Library           ONAPLibrary.Openstack
4 Library               RequestsLibrary
5 Library           Collections
6 Library           ONAPLibrary.Templating    
7 Resource    ../global_properties.robot
8 Resource    openstack_common.robot
9
10 *** Variables ***
11 ${OPENSTACK_NEUTRON_API_VERSION}    /v2.0
12 ${OPENSTACK_NEUTRON_NETWORK_PATH}    /networks
13 ${OPENSTACK_NEUTRON_NETWORK_ADD_BODY_FILE}    openstack/neutron_add_network.jinja
14 ${OPENSTACK_NEUTRON_SUBNET_PATH}    /subnets
15 ${OPENSTACK_NEUTRON_SUBNET_ADD_BODY_FILE}    openstack/neutron_add_subnet.jinja
16 ${OPENSTACK_NEUTRON_PORT_PATH}    /ports
17
18 *** Keywords ***
19 Get Openstack Network
20     [Documentation]    Runs an Openstack Request and returns the network info
21     [Arguments]    ${alias}    ${network_id}
22     ${resp}=    Internal Get Openstack    ${alias}    ${GLOBAL_OPENSTACK_NEUTRON_SERVICE_TYPE}    ${OPENSTACK_NEUTRON_NETWORK_PATH}    /${network_id}
23     [Return]    ${resp.json()}
24
25 Get Openstack Networks
26     [Documentation]    Runs an Openstack Request and returns the network info
27     [Arguments]    ${alias}
28     ${resp}=    Internal Get Openstack    ${alias}    ${GLOBAL_OPENSTACK_NEUTRON_SERVICE_TYPE}    ${OPENSTACK_NEUTRON_NETWORK_PATH}
29     [Return]    ${resp.json()}
30
31 Get Openstack Subnets
32     [Documentation]    Runs an Openstack Request and returns the network info
33     [Arguments]    ${alias}
34     ${resp}=    Internal Get Openstack    ${alias}    ${GLOBAL_OPENSTACK_NEUTRON_SERVICE_TYPE}    ${OPENSTACK_NEUTRON_SUBNET_PATH}
35     [Return]    ${resp.json()}
36
37 Get Openstack Ports
38     [Documentation]    Runs an Openstack Request and returns the network info
39     [Arguments]    ${alias}
40     ${resp}=    Internal Get Openstack    ${alias}    ${GLOBAL_OPENSTACK_NEUTRON_SERVICE_TYPE}    ${OPENSTACK_NEUTRON_PORT_PATH}
41     [Return]    ${resp.json()}
42
43 Add Openstack Network
44     [Documentation]    Runs an Openstack Request to add a network and returns that network id of the created network
45     [Arguments]    ${alias}    ${name}
46     ${arguments}=    Create Dictionary    name=${name}
47     Create Environment    openstack    ${GLOBAL_TEMPLATE_FOLDER}
48     ${data}=   Apply Template    openstack    ${OPENSTACK_NEUTRON_NETWORK_ADD_BODY_FILE}    ${arguments}
49     ${resp}=    Internal Post Openstack    ${alias}    ${GLOBAL_OPENSTACK_NEUTRON_SERVICE_TYPE}    ${OPENSTACK_NEUTRON_NETWORK_PATH}    data_path=    data=${data}
50     Should Be Equal As Strings    201  ${resp.status_code}
51     [Return]    ${resp.json()['network']['id']}
52
53 Delete Openstack Network
54     [Documentation]    Runs an Openstack Request to delete a network
55     [Arguments]    ${alias}    ${network_id}
56     ${resp}=    Internal Delete Openstack    ${alias}    ${GLOBAL_OPENSTACK_NEUTRON_SERVICE_TYPE}    ${OPENSTACK_NEUTRON_NETWORK_PATH}    /${network_id}
57     ${status_string}=    Convert To String    ${resp.status_code}
58     Should Match Regexp    ${status_string}    ^(204|200)$
59     [Return]    ${resp.text}
60
61 Add Openstack Network With Subnet If Not Exists
62     [Documentation]    Runs an Openstack Request to add a network and returns that network id of the created network
63     [Arguments]    ${alias}    ${name}    ${cidr}
64     ${network}=    Get Openstack Subnet By Name    ${alias}    ${name}   ${cidr}
65     ${pass}    ${v}=    Run Keyword and Ignore Error    Dictionary Should Contain Key    ${network}    id
66     Run Keyword If    '${pass}' == 'FAIL'    Add Openstack Network With Subnet    ${alias}    ${name}    ${cidr}
67     ${network}=    Get Openstack Subnet By Name    ${alias}    ${name}   ${cidr}
68     ${network_id}=     Get From Dictionary    ${network}    id
69     [Return]     ${network_id}
70
71
72 Add Openstack Network With Subnet
73     [Documentation]    Runs an Openstack Request to add a network and returns that network id of the created network
74     [Arguments]    ${alias}    ${name}    ${cidr}
75     ${network_id}=    Add Openstack Network    ${alias}    ${name}
76     ${arguments}=    Create Dictionary    network_id=${network_id}    cidr=${cidr}    subnet_name=${name}
77     Create Environment    openstack    ${GLOBAL_TEMPLATE_FOLDER}
78     ${data}=   Apply Template    openstack    ${OPENSTACK_NEUTRON_SUBNET_ADD_BODY_FILE}    ${arguments}
79     ${resp}=    Internal Post Openstack    ${alias}    ${GLOBAL_OPENSTACK_NEUTRON_SERVICE_TYPE}    ${OPENSTACK_NEUTRON_SUBNET_PATH}    data_path=    data=${data}
80     Should Be Equal As Strings    201  ${resp.status_code}
81     [Return]     ${network_id}
82
83 Get Openstack Subnet By Name
84     [Documentation]    Retrieve the subnet from openstack by it's name.
85     [Arguments]    ${alias}    ${network_name}    ${network_cidr}
86     ${resp}=    Get Openstack Subnets    ${alias}
87     @{list}=    Get From Dictionary    ${resp}    subnets
88     ${returnnet}=    Set Variable
89     :FOR    ${net}    IN    @{list}
90     \    ${name}=   Get From Dictionary    ${net}    name
91     \    ${cidr}=   Get From Dictionary    ${net}    cidr
92     \    ${returnnet}=    Set Variable    ${net}
93     \    Exit For Loop If    '${name}'=='${network_name}' and '${cidr}'=='${network_cidr}'
94     \    ${returnnet}=    Create DIctionary
95     [Return]    ${returnnet}
96
97 Get Openstack IP By Name
98     [Arguments]    ${alias}    ${network_name}    ${cidr}    ${ip}
99     ${ports}=    Get Openstack Ports For Subnet    ${alias}    ${network_name}    ${cidr}
100     Log    ${ports}
101     :FOR    ${port}   IN   @{ports}
102     \    Return From Keyword If    '${port['fixed_ips'][0]['ip_address']}' == '${ip}'    ${port}
103     [Return]    None
104
105 Get Openstack Ports For Subnet
106     [Arguments]    ${alias}    ${network_name}    ${cidr}
107     ${net}=    Get Openstack Subnet By Name    ${alias}    ${network_name}    ${cidr}
108     ${ports}=    Get Openstack Ports     ${alias}
109     ${net_ports}=    Create List
110     :FOR    ${port}    IN    @{ports['ports']}
111     \    Run Keyword If   '${net['network_id']}' == '${port['network_id']}'    Append To List    ${net_ports}   ${port}
112     [Return]   ${net_ports}
113
114 Get Openstack Port By Id
115     [Arguments]    ${alias}    ${port_id}
116     ${resp}=    Internal Get Openstack    ${alias}    ${GLOBAL_OPENSTACK_NEUTRON_SERVICE_TYPE}    ${OPENSTACK_NEUTRON_PORT_PATH}/${port_id}
117     [Return]    ${resp}
118
119
120 Delete Openstack Port
121     [Arguments]    ${alias}    ${port_id}
122     ${resp}=    Internal Delete Openstack    ${alias}    ${GLOBAL_OPENSTACK_NEUTRON_SERVICE_TYPE}    ${OPENSTACK_NEUTRON_PORT_PATH}       /${port_id}
123     ${status_string}=    Convert To String    ${resp.status_code}
124     Should Match Regexp    ${status_string}    ^(204|200)$
125     [Return]    ${resp.text}
126