Network Automation with ROBOT Framework
Folder-structure
Scripts
testcase_with_keywordsLibrary.robot
*** Settings ***
Documentation Test Case With Keyword
Resource Resources/Keywords/common.robot
Resource Resources/Keywords/vxlanInstance.robot
Test Setup Open Connection
Test Teardown Close Connection
*** Test Cases ***
[Documentation] Step 1: Verify VXLAN Interface Status
VXLAN Interface Status
[Documentation] Step 2: Verify VXLAN VNI to VLAN Mapping
VXLAN VNI to VLAN Mapping
Resources/Keywords/common.robot
*** Settings ***
Documentation Common Keyword Library
Library ../../Libraries/commonLib.py
Variables ../Variables/veosLeaf01.yaml
*** Variables ***
${devType} ${virtualBox}[vmType]
${ipAddr} ${virtualBox}[vmManagement][hostIp]
${port} ${virtualBox}[vmManagement][hostPort]
${username} ${virtualBox}[vmManagement][username]
${password} ${virtualBox}[vmManagement][password]
*** Keywords ***
Open Connection
${connect} Connect To Device ${ipAddr} ${port} ${username} ${password} ${devType}
Set Global Variable ${connect}
Close Connection
Disconnect From Device ${connect}
Resources/Keywords/vxlanInstance.robot
*** Settings ***
Documentation VXLAN Instance Keyword Library
Library ../../Libraries/vxlanInstance.py
Variables ../Variables/veosLeaf01.yaml
*** Variables ***
${vxlanIntf} ${vxlans}[interface][intName]
@{vniList} @{vxlans}[vnis]
*** Keywords ***
VXLAN Interface Status
[Documentation] Getting VXLAN Interface Status
${interfaceStatus} VXLAN Status ${connect} ${vxlanIntf}
Should Be Equal "${interfaceStatus}" "up"
VXLAN VNI to VLAN Mapping
[Documentation] Getting VNI to VLAN Mapping
FOR ${expected} IN @{vniList}
${actualVni} VXLAN VNI Mapping ${connect} ${vxlanIntf} ${expected}[mappedVlan]
Should Be Equal "${actualVni}" "${expected}[vniId]"
END
Libraries/commonLib.py
from netmiko import ConnectHandler
def connect_to_device(ipAddr, port, usernm, passwd, device):
device = {
"host": ipAddr,
"port": port,
"username": usernm,
"password": passwd,
"device_type": device,
}
return ConnectHandler(**device)
def disconnect_from_device(connect):
return connect.disconnect()
Libraries/vxlanInstance.py
import json
def vxlan_status(connect, vxlanInt):
responses = connect.send_command(f"show interface {vxlanInt} | json")
response = json.loads(responses)
vxlan_status = response['interfaces'][vxlanInt]['lineProtocolStatus']
return vxlan_status
def vxlan_vni_mapping(connect, vxlanInt, vlanId):
responses = connect.send_command(f"show interface {vxlanInt} | json")
response = json.loads(responses)
mapping = response['interfaces'][vxlanInt]['vlanToVniMap'][vlanId]['vni']
return mapping
Documentation Test Case With Keyword
Resource Resources/Keywords/common.robot
Resource Resources/Keywords/vxlanInstance.robot
Test Setup Open Connection
Test Teardown Close Connection
*** Test Cases ***
[Documentation] Step 1: Verify VXLAN Interface Status
VXLAN Interface Status
[Documentation] Step 2: Verify VXLAN VNI to VLAN Mapping
VXLAN VNI to VLAN Mapping
Resources/Keywords/common.robot
*** Settings ***
Documentation Common Keyword Library
Library ../../Libraries/commonLib.py
Variables ../Variables/veosLeaf01.yaml
*** Variables ***
${devType} ${virtualBox}[vmType]
${ipAddr} ${virtualBox}[vmManagement][hostIp]
${port} ${virtualBox}[vmManagement][hostPort]
${username} ${virtualBox}[vmManagement][username]
${password} ${virtualBox}[vmManagement][password]
*** Keywords ***
Open Connection
${connect} Connect To Device ${ipAddr} ${port} ${username} ${password} ${devType}
Set Global Variable ${connect}
Close Connection
Disconnect From Device ${connect}
Resources/Keywords/vxlanInstance.robot
*** Settings ***
Documentation VXLAN Instance Keyword Library
Library ../../Libraries/vxlanInstance.py
Variables ../Variables/veosLeaf01.yaml
*** Variables ***
${vxlanIntf} ${vxlans}[interface][intName]
@{vniList} @{vxlans}[vnis]
*** Keywords ***
VXLAN Interface Status
[Documentation] Getting VXLAN Interface Status
${interfaceStatus} VXLAN Status ${connect} ${vxlanIntf}
Should Be Equal "${interfaceStatus}" "up"
VXLAN VNI to VLAN Mapping
[Documentation] Getting VNI to VLAN Mapping
FOR ${expected} IN @{vniList}
${actualVni} VXLAN VNI Mapping ${connect} ${vxlanIntf} ${expected}[mappedVlan]
Should Be Equal "${actualVni}" "${expected}[vniId]"
END
Libraries/commonLib.py
from netmiko import ConnectHandler
def connect_to_device(ipAddr, port, usernm, passwd, device):
device = {
"host": ipAddr,
"port": port,
"username": usernm,
"password": passwd,
"device_type": device,
}
return ConnectHandler(**device)
def disconnect_from_device(connect):
return connect.disconnect()
Libraries/vxlanInstance.py
import json
def vxlan_status(connect, vxlanInt):
responses = connect.send_command(f"show interface {vxlanInt} | json")
response = json.loads(responses)
vxlan_status = response['interfaces'][vxlanInt]['lineProtocolStatus']
return vxlan_status
def vxlan_vni_mapping(connect, vxlanInt, vlanId):
responses = connect.send_command(f"show interface {vxlanInt} | json")
response = json.loads(responses)
mapping = response['interfaces'][vxlanInt]['vlanToVniMap'][vlanId]['vni']
return mapping
Results
Comments
Post a Comment