# Copyright (c) 2016 Cisco and/or its affiliates. # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at: # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. *** Settings *** | Library | resources.libraries.python.honeycomb.HcAPIKwInterfaces.InterfaceKeywords | Library | resources.libraries.python.honeycomb.NAT.NATKeywords | Library | resources.libraries.python.NAT.NATUtil | Documentation | Keywords used to test Honeycomb NAT node. *** Keywords *** | NAT Operational Data From Honeycomb Should Be empty | | [Documentation] | Uses Honeycomb API to retrieve NAT operational data\ | | ... | and expects to find only default values. | | ... | | ... | *Arguments:* | | ... | - node - information about a DUT node. Type: dictionary | | ... | - default_settings - NAT default settings. Type: dictionary | | ... | | ... | *Example:* | | ... | | ... | \| NAT Operational Data From Honeycomb Should Be empty \ | | ... | \| ${nodes['DUT1']} \| ${default_settings} \| | | [Arguments] | ${node} | ${default_settings} | | ${data}= | Get NAT Oper data | ${node} | | Compare data structures | ${data} | ${default_settings} | Honeycomb configures NAT entry | | [Documentation] | Uses Honeycomb API to configure a static NAT entry. | | ... | | ... | *Arguments:* | | ... | - node - information about a DUT node. Type: dictionary | | ... | - data - NAT entry to configure. Type: dictionary | | ... | - instance - NAT instance on VPP node. Type: integer | | ... | - index - Index of NAT entry. Type: integer | | ... | | ... | *Example:* | | ... | | ... | \| Honeycomb configures NAT entry \| ${nodes['DUT1']} \| ${data} \ | | ... | \| ${0} \| ${1} \| | | [Arguments] | ${node} | ${data} | ${instance}=0 | ${index}=1 | | Configure NAT entries | ${node} | ${data} | ${instance} | ${index} | NAT entries from Honeycomb should be | | [Documentation] | Uses Honeycomb API to retrieve NAT operational data\ | | ... | and compares against expected settings. | | ... | | ... | *Arguments:* | | ... | - node - information about a DUT node. Type: dictionary | | ... | - settings - NAT entry to expect. Type: dictionary | | ... | - instance - NAT instance on VPP node. Type: integer | | ... | | ... | *Example:* | | ... | | ... | \| NAT entries from Honeycomb should be \| ${nodes['DUT1']} \ | | ... | \| ${settings} \| ${0} \| | | [Arguments] | ${node} | ${settings} | ${instance}=0 | | ${data}= | Get NAT Oper data | ${node} | | ${data}= | Set Variable | | ... | ${data['nat-instances']['nat-instance'][${instance}]['mapping-table']} | | Compare data structures | ${data} | ${settings} | NAT entries from VAT should be | | [Documentation] | Uses VPP test API to retrieve NAT entries\ | | ... | and compares against expected settings. | | ... | | ... | *Arguments:* | | ... | - node - information about a DUT node. Type: dictionary | | ... | - settings - NAT entry to expect. Type: dictionary | | ... | | ... | *Example:* | | ... | | ... | \| NAT entries from VAT should be \| ${nodes['DUT1']} \ | | ... | \| ${settings} \| | | [Arguments] | ${node} | ${settings} | | ${data}= | VPP get NAT static mappings | ${node} | | Compare data structures | ${data} | ${settings} | Honeycomb configures NAT on interface | | [Documentation] | Uses Honeycomb API to configure NAT on an interface. | | ... | | ... | *Arguments:* | | ... | - node - information about a DUT node. Type: dictionary | | ... | - interface - name of an interface on the node. Type: string | | ... | - direction - NAT direction parameter, inbound or outbound.\ | | ... | Type: string | | ... | | ... | *Example:* | | ... | | ... | \| Honeycomb configures NAT on interface \| ${nodes['DUT1']} \ | | ... | \| GigabitEthernet0/8/0 \| outbound \| | | [Arguments] | ${node} | ${interface} | ${direction} | | Configure NAT on interface | | ... | ${node} | ${interface} | ${direction} | Honeycomb removes NAT interface configuration | | [Documentation] | Uses Honeycomb API to remove an existing NAT interface\ | | ... | configuration. | | ... | | ... | *Arguments:* | | ... | - node - information about a DUT node. Type: dictionary | | ... | - interface - name of an interface on the node. Type: string | | ... | - direction - NAT direction parameter, inbound or outbound.\ | | ... | Type: string | | ... | | ... | *Example:* | | ... | | ... | \| Honeycomb removes NAT interface configuration \| ${nodes['DUT1']} \ | | ... | \| GigabitEthernet0/8/0 \| outbound \| | | [Arguments] | ${node} | ${interface} | ${direction} | | Configure NAT on interface | | ... | ${node} | ${interface} | ${direction} | ${True} | NAT interface Operational Data From Honeycomb Should Be | | [Documentation] | Uses Honeycomb API to retrieve interface operational data\ | | ... | and compares the NAT section against expected settings. | | ... | | ... | *Arguments:* | | ... | - node - information about a DUT node. Type: dictionary | | ... | - interface - name of an interface on the node. Type: string | | ... | - direction - NAT direction parameter, inbound or outbound.\ | | ... | Type: string | | ... | | ... | *Example:* | | ... | | ... | \| NAT interface Operational Data From Honeycomb Should Be \ | | ... | \| ${nodes['DUT1']} \| GigabitEthernet0/8/0 \| outbound \| | | [Arguments] | ${node} | ${interface} | ${direction} | | ${data}= | Get interface oper data | ${node} | ${interface} | | Variable should exist | ${data['interface-nat:nat']['${direction}']} | NAT interface Operational Data From Honeycomb Should Be empty | | [Documentation] | Uses Honeycomb API to retrieve interface operational data\ | | ... | and expects to find no data for the given direction. | | ... | | ... | *Arguments:* | | ... | - node - information about a DUT node. Type: dictionary | | ... | - interface - name of an interface on the node. Type: string | | ... | - direction - NAT direction parameter, inbound or outbound.\ | | ... | Type: string | | ... | | ... | *Example:* | | ... | | ... | \| NAT interface Operational Data From Honeycomb Should Be empty \ | | ... | \| ${nodes['DUT1']} \| GigabitEthernet0/8/0 \| outbound \| | | [Arguments] | ${node} | ${interface} | ${direction} | | ${data}= | Get interface oper data | ${node} | ${interface} | | Variable should not exist | ${data['interface-nat:nat']['${direction}']} | NAT interface Operational Data From VAT Should Be | | [Documentation] | Uses Honeycomb API to retrieve NAT configured interfaces\ | | ... | and compares with expected settings. | | ... | | ... | *Arguments:* | | ... | - node - information about a DUT node. Type: dictionary | | ... | - settings - settings to expect. Type: dictionary | | ... | Type: string | | ... | | ... | *Example:* | | ... | | ... | \| NAT interface Operational Data From VAT Should Be \ | | ... | \| ${nodes['DUT1']} \| ${settings} \| | | [Arguments] | ${node} | ${settings} | | ${data}= | VPP get NAT interfaces | ${node} | | Compare data structures | ${data} | ${settings}