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


Results






Comments

Popular posts from this blog

gNMI_with_grafana on containerlabs

EVPN Route type-1 & type-4 in action