- 
                Notifications
    You must be signed in to change notification settings 
- Fork 0
Keystack platform
License
OpenIxia/keystack-IxNetworkDataModel
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
version: 1.1.1
description:
   This app is driven by user input data-model yaml config files.
   It configures IxNetwork using the SDK ixnetwork_restpy python
   package to execute IxNetwork ReST APIs.
Requirements:
   - Runs on Linux OS only.
   - pip install requests, PyYaml
   - data-model yml config file
   Note: This ixNetworkDataModel package comes with ixnetwork_restpy.
         It is inside the /Apps/IxNetworkDataModel/IxNetworkRestpy directory.
   - For port capturing requirements:
      - IxNetwork Wireshark installed
      - Linux OS wireshark installed
      - sudo chmod o+x /usr/bin/dumpcap (For redhat distributions)
      - sudo chmod o+x /usr/sbin/dumpcap (For ubuntu distributions)
   
In your testcase yml files:
   pythonScript: /Modules/IxNetworkDataModel/Scripts/<the_python_script_to_run>.py
   configParametersFile: configs.yml
   importAppLibraryPaths:
      - /Apps/IxNetworkDataModel/src
      - /Apps/IxNetworkDataModel/IxNetworkRestpy
      
configFile sample (configs.yml):
   ixNetworkApiServerIp: 192.168.28.10
   # Below are for Linux API server only
   username: admin
   password: admin
   apiKey: None
   deleteSession: False
   forceTakePortOwnership: True
   releasePorts: False
   restPort: None
   logLevel: info
   ports:
     - name: Host1
       port: 192.168.28.5, 1, 1
       #type: novusHundredGigLanFcoe
       #enableAutoNegotiation: false
       #ieeeL1Defaults: false
       packetCapture:
         enable: True
         rxMode: captureAndMeasure
         controlPlane: False
         dataPlane: True
         sliceSize: 80
     - name: Host2
       port: 192.168.28.5, 1, 2
       #type: novusHundredGigLanFcoe
       #enableAutoNegotiation: false
       #ieeeL1Defaults: false       
       packetCapture:
         enable: True
         rxMode: captureAndMeasure
         controlPlane: False
         dataPlane: True
         sliceSize: 80
      
   topologies:
      - name: Host1
        ports:
          - Host1
        deviceGroups:
          - name: Host1
            multiplier: 1
            ethernet:
              name: Host1
            ipv4:
              name: Host1
              ipStartValue: 1.1.1.1
              ipStepValue: 0.0.0.0
              subnet: 255.255.255.0
              ipGatewayStartValue: 1.1.1.2
              ipGatewayStepValue: 0.0.0.0
      - name: Host2
        ports:
          - Host2
        deviceGroups:
          - name: Host2
            multiplier: 1
            ethernet:
              name: Host2
            ipv4:
              name: Host2
              ipStartValue: 1.1.1.2
              ipStepValue: 0.0.0.0
              subnet: 255.255.255.0
              ipGatewayStartValue: 1.1.1.1
              ipGatewayStepValue: 0.0.0.0
   trafficItems:
     - name: Host1
       enable: True
       trafficType: raw
       srcPortName: Host1
       destPortName: Host2
       biDirection: True
       frameRate:
         type: percentLineRate
         rate: 50
       transmissionControl:
         # fixedFrameCount | continuous
         type: fixedFrameCount
         frameCount: 100
       frameSize: 128
       packetHeaders:
         ethernet:
           src:
             valueType: increment
             startValue: ngpfSrcMac
             stepValue: 00:00:00:00:00:00
             stepValue: 00:00:00:00:00:00
             count: 1
           dst:
             valueType: increment
             startValue: ngpfResolvedGatewayMac
             stepValue: 00:00:00:00:00:01
             count: 1
         ipv4:
           appendToStack: ethernet
           src:
             valueType: increment
             startValue: 1.1.1.1
             stepValue: 0.0.0.1
             count: 1
           dst:
             valueType: increment
             startValue: 1.1.1.2
             stepValue: 0.0.0.1
             count: 1
         udp:
           appendToStack: ipv4
           dstPort:
             startValue: 4791
	   srcPort:
             startValue: 1111
script example:
import sys, traceback
from ixNetworkDataModel import ConfigIxNetworkRestPy
from keystackEnv import keystackObj
dataModelYamlFile = keystackObj.configParamsFileFullPath
try:
    mainObj = ConfigIxNetworkRestPy(dataModelFile=dataModelYamlFile, dataModelObj=None,
                                    sessionName=None, sessionId=None, apiKey=None, clearConfig=True,
                                    logLevel='info', logFilename=None, keystackObj=keystackObj)
    mainObj.ports.assignPorts()
    mainObj.portCapture.configure()
    mainObj.closeAllTabs()
    mainObj.ngpf.configure()
    mainObj.ngpf.startAllProtocols()
    mainObj.ngpf.verifyProtocolsUp()
    ngpfMacAddresses = mainObj.ngpf.getNgpfLearnedMacAddresses()
    mainObj.trafficItem.configRawTrafficItems(ngpfMacAddresses=ngpfMacAddresses)
    mainObj.trafficItem.generateAll()
    mainObj.trafficItem.apply()
    mainObj.portCapture.start()
    mainObj.trafficItem.start()
    mainObj.trafficItem.waitForTrafficCompletion(maxCounter=10)
    mainObj.portCapture.stop()
    mainObj.portCapture.getDataPlaneCaptureFile(writeCaptureToFile=False,
                                                amountOfPacketsToWrite=5,
                                                captureFileDestPath=keystackObj.moduleProperties['artifactsRepo'])
    if mainObj.configs.get('releasePorts', False):
        mainObj.ports.releasePorts()
    
    if mainObj.configs.get('deleteSession', True):
        mainObj.deleteSession()
except Exception as errMsg:
    if 'mainObj' in locals():
        mainObj.logFailed(traceback.format_exc(None, errMsg))
About
Keystack platform
Resources
License
Stars
Watchers
Forks
Packages 0
        No packages published