Introduction

This page describes the Fusion JSON-RPC interface. This interface allows you to programatically control the ExaLINK Fusion from a remote host via the Ethernet management interface. This interface is enabled from the command line using:

configure http enable

Commands are then sent via HTTP POST requests to the Fusion web interface, accessible via the Fusion network address. Authentication is performed by the Fusion server by first sending a login request containing a username and password. After authentication is complete, the Fusion web server will open and maintain an HTTP session, through which JSON RPC requests can be made. The address for requests to the RPC interface is:

http://<mgmt-addr>/jsonrpc

!!! Example (Python)

# Python examples use the jsonrpc-requests library
# (https://pypi.org/project/jsonrpc-requests/)

from jsonrpc_requests import Server

fusion = Server("http://myfusion/jsonrpc")

The remainder of this document lists the RPC calls that can be made, the arguments you must provide with them, and the return values.

Authentication

Clients must be authenticated prior to being able to issue commands. Once authenticated an HTTP session is opened, with a cookie stored at the client end. It is the user's responsibility to store this cookie and provide it with subsequent requests. The following commands handle this authentication.

Note: that an idle timeout of 15 minutes applies to all sessions.

Management Interface

login

Log in to the ExaLINK Fusion. The username and password must be supplied as strings to this command. Returns success if supplied credentials are valid, error otherwise.

Example (Python)
>>> fusion.login(username="admin", password="admin")
True
Example (json-rpc)
// Request
{
    "method": "login",
    "params": {
        "username":"admin",
        "password":"admin"
    },
    "id": 1
}

// Response
{
    "result": true,
    "id": 1
}

Parameters

Field Type mux Description
username string Username to log in as
password string Password for user

Result

True if successful

logout

Log out of the ExaLINK Fusion.

Example (Python)
>>> fusion.logout()
True
Example (json-rpc)
// Request
{
    "method": "logout",
    "id": 1
}

// Response
{
    "result": true,
    "id": 1
}

Parameters

None

Result

True if successful

whoami

Returns the username of the current session

Example (Python)
>>> fusion.whoami()
{u'username': u'admin'}
Example (json-rpc)
// Request
{
    "method": "whoami",
    "id": 1
}

// Response
{
    "result": {
        "username": "admin"
    },
    "id": 1
}

Parameters

None

Result

The username of the current user

set_password

This method can be used to change the user's password

Log in to the ExaLINK Fusion. The username and password must be supplied as strings to this command. Returns success if supplied credentials are valid, error otherwise.

Example (Python)
>>> fusion.set_password(username="admin", password="mynewpassword")
True
Example (json-rpc)
// Request
{
    "method": "set_password",
    "params": {
        "password":"mynewpassword"
    },
    "id": 1
}

// Response
{
    "result": true,
    "id": 1
}

Parameters

Field Type mux Description
username string Username of the user whose password will be changed
password string for user The new password

Result

True if successful

get_hostname

This method returns the hostname of the ExaLINK Fusion

Example (Python)
>>> fusion.get_hostname()
{u'hostname': u'EXALINK-FUSION'}
Example (json-rpc)
// Request
{
    "method": "get_hostname",
    "id": 1
}

// Response
{
    "result": {
        "hostname": "EXALINK-FUSION"
    },
    "id": 1
}

Parameters

None

Result

The current hostname

set_hostname

This method sets the hostname of the ExaLINK Fusion

Example (Python)
>>> fusion.set_hostname(hostname="myFusion")
True
Example (json-rpc)
// Request
{
    "method": "set_hostname",
    "params": {
        "hostname":"myFusion"
    },
    "id": 1
}

// Response
{
    "result": true,
    "id": 1

}

Parameters

Field Type mux Description
hostname string The new hostname

Result

True if successful

get_management_address_ipv4

Get information on the IPv4 management address configuration of the ExaLINK Fusion

Example (Python)
>>> fusion.get_management_address_ipv4()
{u'mode': u'static', u'netmask': u'255.255.255.0', u'gateway': u'', u'address': u'172.16.0.153'}
Example (json-rpc)
// Request
{
    "method": "get_management_address_ipv4",
    "id": 1
}

// Response
{
    "result": {
        "mode": "static",
        "netmask": "255.255.255.0",
        "gateway": "",
        "address": "172.16.0.153"
    },
    "id": 1
}

Parameters

None

Result

Field Type mux Description
mode string IPv4 configuration mode: static or dhcp
netmask string Network mask in dot-decimal notation
gateway string Gateway address in dot-decimal notation
address string IPv4 address in dot-decimal notation

set_management_address_ipv4

This method can be used to set the IPv4 management address configuration of the ExaLINK Fusion

Example (Python)
>>> fusion.set_management_address_ipv4(mode="static", static={"address":"172.16.0.153","netmask":"255.255.255.0", "gateway":""})
True
Example (json-rpc)
// Request
{
    "method": "set_management_address_ipv4",
    "params": {
        "mode": "static",
        "netmask": "255.255.255.0",
        "gateway": "",
        "address": "172.16.0.153"
    },
    "id": 1
}

// Response
{
    "result": true,
    "id": 1
}

Parameters

Field Type mux Description
mode string IP address assignment mode to use: static or dhcp

In the case of setting a static IP address, additional required parameters are:

Field Type mux Description
address string IPv4 address to use in dot-decimal notation
netmask string Network mask in dot-decimal notation
gateway string Gateway address in dot-decimal notation

Result

True if successful

get_version

This method returns version details for the ExaLINK fusion along with a summary of installed hardware.

Example (Python)
>>> fusion.get_version()
{u'mainboard': {u'serial': u'EXALINK-FUSION', u'type': u'EBFSN-02'}, u'line_card': {u'A': {u'type': u'LC10G-03'}, u'C': {u'type': u'LC10G-03'}, u'B': {u'type': u'LC10G-03'}}, u'module': {u'X': {u'firmware': {u'hash': u'f9120423', u'datecode': 1465301675, u'type': u'mux'}, u'type': u'KU115-03'}}, u'software': {u'date': u'2016-06-08 11:40:15 +1000 (f305efa)', u'version': u'1.4.2'}}
Example (json-rpc)
// Request
{
    "method": "get_version",
    "id": 1
}

// Response
{
    "mainboard": {
        "serial": "EXALINK-FUSION",
        "type": "EBFSN-02"
    },
    "line_card": {
        "A": {
        "type": "LC10G-03"
        },
        "C": {
        "type": "LC10G-03"
        },
        "B": {
        "type": "LC10G-03"
        }
    },
    "module": {
        "X": {
        "firmware": {
            "hash": "f9120423",
            "datecode": 1465301675,
            "type": "mux"
        },
        "type": "KU115-03"
        }
    },
    "software": {
        "date": "2016-06-08 11:40:15 +1000 (f305efa)",
        "version": "1.4.2"
    },
    "id": 1
}

Parameters

None

Result

Field Type mux Description
mainboard array A list of strings describing the Mainboard in the Fusion
serial string The serial number of this Mainboard
type string The type of Mainboard installed into this Fusion
line_card array A list of strings describing the Line Cards installed in the Fusion
module array A list of the modules describing the Internal Modules installed in the Fusion and their firmware setting
software array A list containing the version and date of creation of the current software installed in the Fusion

get_session_timeout

This methods returns the current time (in seconds) of idle while logged in before being logged out automatically.

Example (Python)
>>> fusion.get_session_timeout()
600
Example (json-rpc)
// Request
{
    "method": "get_session_timeout",
    "id": 1
}

// Response

{
    "result": 600,
    "id": 1

}

Parameters

None

Result

An integer of the current session timeout value (in seconds).

set_session_timeout

Set the maximum idle time (in seconds) before automatic logging out of the Fusion.

Example (Python)
>>> fusion.set_session_timeout(600)
True
Example (json-rpc)
// Request
{
    "method": "set_session_timeout",
    "params": ["600"],
    "id": 1
}

// Response
{
    "result": true,
    "id": 1
}

Parameters

Field Type mux Description
timeout integer The number of seconds of idle activity before logging the user out

Result

True if successful.

check_user_permission

Example (Python)
>>> fusion.check_user_permissions("user")
2
Example (json-rpc)
// Request
{
    "method": "check_user_permissions",
    "params": ["admin"],
    "id": 1
}

// Response
{
    "result": 2,
    "id": 1
}

Parameters

Field Type mux Description
user string Name of the account to check the permission level of

Result

Field Type mux Description
access_level integer Value of the access level of the account

get_management_access_list

Example (Python)
>>> fusion.get_management_access_list()
{u'deny': [], u'allow': []}
Example (json-rpc)
// Request
{
    "method": "get_management_access_list",
    "id": 1
}

// Response
{
    "result": {
        "allow": [ ],
        "deny": [ ]
    },
    "id": 1
}

Parameters

None

Result

Result

Field Type mux Description
allow array A list of IPs allowed to access the management interface
deny array A list of IPs not allowed to access the management interface

set_time_sync_mode

Example (Python)
>>> fusion.set_time_sync_mode(ntp_config={"server":"172.160.0.147"}, mode="ntp")
True
Example (json-rpc)
// Request
{
    "method": "set_time_sync_mode",
    "params": {
        "ntp_config": {
            "server": "172.160.0.147"
        },
        "mode": "ntp"
    },
    "id": 1
}

// Response
{
    "result": true,
    "id": 1
}

Parameters

Field Type mux Description
ntp_config object An array holding the data required for NTP configuration
server string The IP address of the NTP device to base time off
mode string The timesync method to be used on the Fusion

Result

True if successful

get_time_sync_status

This method returns the details of the timesync mode currently in use on the Fusion (in the event of multiple modes used in tandem, both will be returned in the same query).

Example (Python)
>>> fusion.get_time_sync_status()
{u'pps': {u'signal_detected': True, u'last_time': 1506489752}, u'gps': {u'time_accuracy': 7, u'position': {u'latitude': -33.8672081, u'altitude': 93.153, u'longitude': 151.2053761}, u'fix': True, u'num_satellites': 12}}
Example (json-rpc)
// Request
{
    "method": "get_time_sync_output",
    "id": 1
}

// Response
{
    "pps": {
        "signal_detected": true,
        "last_time": 1506489752
    },
    "gps": {
        "time_accuracy": 7,
        "position": {
            "latitude": -33.8672081,
            "altitude": 93.153,
            "longitude": 151.2053761
        },
        "fix": true,
        "num_satellites": 12
    }
}

Parameters

None

Result

Based on the timesync modes selected the return value will vary.

PPS return value is as below:

Field Type mux Description
signal_detected bool Whether or not the Fusion has acquired a PPS signal currently or not.
last_time float The last time indicated via the PPS signal.

NTP return value is as below:

Field Type mux Description
server string The IP of the NTP server selected.
poll_interval unsigned The interval in seconds between server polls.
offset double The time offset on the NTP time.
stratum unsigned The stratum the NTP server currently belongs to.

PTP return value is as below:

Field Type mux Description
domain unsigned The PTP domain connected to in the network.
clock array Consists of entries with corresponding interface name fields, all contain their state variable (below).
state string FREERUN or otherwise indicated, dictates the status of the PTP clock.
adev double The Allan deviation for the clock on the specific interface.
master string The IP of the PTP master defined.
state string The PTP role of the Fusion.
offset string The PTP offset in the current system.

GPS return value is as below:

Field Type mux Description
time_accuracy unsigned The accuracy of the GPS timing.
position array The set of coordinates for the GPS signal (containing longitude, latitude and altitude values).
longitude double The longitudal coordinate of the device.
latitude double The latitudal coordinate of the device.
altitude double The altitude coordinate of the device.
fix bool The status of positional fix for the Fusion's GPS setting.
num_satellites unsigned The number of satellites found through the GPS signal.

get_time_sync_output

Example (Python)
>>> fusion.get_time_sync_output()
{u'pps': {u'edge': u'rising'}}
Example (json-rpc)
// Request
{
    "method": "get_time_sync_output",
    "id": 1
}

// Response
{
    "result": {
        "pps": {
            "edge": "rising"
        }
    },
    "id": 1
}

Parameters

None

Result

Field Type mux Description
edge string Either 'rising' or 'falling' based on edge being used for PPS output

set_time_sync_output_pps

Example (Python)
>>> fusion.set_time_sync_output_pps()
True
Example (json-rpc)
// Request
{
    "method": "set_time_sync_output_pps",
    "params": {
        "enable": true,
        "edge": "rising"
    },
    "id": 1
}

// Response
{
    "result": true,
    "id": 1
}

Parameters

Field Type mux Description
enable boolean True to enable PPS output, False to disable
edge string Either rising or failling

Result

update_file

This method can be used to update the ExaLINK Fusion's firmware with a file already placed onto the Fusion via SFTP.

Example (Python)
>>> fusion.update_file(tarball="exalink_fusion_1.1.1.tar")
True
Example (json-rpc)
// Request
{
    "method": "update_file",
    "params": {
        "tarball":"exalink_fusion_1.1.1.tar"
    },
    "id": 1
}

Parameters

Field Type mux Description
enable boolean True to enable PPS output, False to disable

update_file

This method can be used to update the ExaLINK Fusion’s firmware with a file already placed onto the Fusion via SFTP.

Example (Python)
>>> fusion.update_file(tarball="exalink_fusion_1.1.1.tar")
True
Example (json-rpc)
// Request
{
    "method": "update_file",
    "params": {
        "tarball":"exalink_fusion_1.1.1.tar"
    },
    "id": 1
}

Parameters

Field Type mux Description
tarball string Filename of the tarball to be used in the update

Result

None

update_tftp

This method updates the Fusion from a file taken from a TFTP server.

Example (Python)
fusion.update_tftp(server="172.16.0.160", file="exalink_fusion_1.1.1.tar")
True
Example (json-rpc)
// Request
{
    "method": "update_tftp",
    "params": {
        "server":"172.16.0.160",
        "file":"exalink_fusion_1.1.1.tar"
    },
    "id": 1
}
Field Type mux Description
server string Address of the device hosting the TFTP service
file string Filename of the tarball on the TFTP server

Result

None

update_usb

This method is used to update the fusion via a connected USB storage device.

Example (Python)
fusion.update_usb(tarball="exalink_fusion_1.1.1.tar")
True
Example (json-rpc)
// Request
{
    "method": "update_usb",
    "params": {
        "tarball":"exalink_fusion_1.1.1.tar"
    },
    "id": 1
}

Parameters

Field Type mux Description
tarball string Filename of the tarball on the storage device

Result

True if successful

reboot

This method reboots the ExaLINK Fusion

Example (Python)
>>> fusion.reboot()
True
Example (json-rpc)
// Request
{
    "method": "reboot",
    "id": 1
}

Parameters

None

Result

None

schedule_reboot

This method is used to schedule a reboot after a number of seconds.

Example (Python)
>>> fusion.schedule_reboot(after=200)
True
Example (json-rpc)
// Request
{
    "method": "schedule_reboot",
    "params": {
        "after": 200
    },
    "id": 1
}

// Response
{
    "result": true,
    "id": 1
}

Parameters

Field Type mux Description
after integer Time (in seconds) to begin reboot sequence (starting from after receiving the call)

Result

True if successful.

set_port_lldp

This method is used to enable or disable transmission of LLDP frames on a specified port.

Example (Python)
>>> fusion.set_port_lldp(port="A1", transmit=1)
True
Example (json-rpc)
// Request
{
    "method": "set_port_lldp",
    "params": {
        "port": "A1",
        "transmit": 1
    },
    "id" : 1
}

// Response
{
    "result": true,
    "id": 1
}
Field Type mux Description
port string Name of the port to modify LLDP status on
transmit boolean Set to 1 to enable LLDP frame transmission, 0 to disable

Result

True if successful.

get_port_lldp_neighbors

This method returns the LLDP entries for the port from the Fusion's LLDP agent.

Example (Python)
>>> fusion.get_port_lldp_neighbors(port="A1")
[{u'lldp': True, u'neighbors': [{u'system_name': u'fusion2', u'system_description': u'ExaLINK Fusion', u'chassis_id': [100, 63, 95, 128, 25, 128], u'port_id_subtype': 5, u'management_address': [{u'address_subtype': 1, u'interface': 0, u'interface_subtype': 1, u'address': [172, 16, 0, 152]}], u'chassis_id_subtype': 4, u'port_id': [65, 49]}], u'port': u'A2'}]
Example (json-rpc)
// Request
{
    "method": "get_port_lldp_neighbors",
    "params": "A1",
    "id": 1
}

// Response
{
    "result": {
        "lldp": true,
        "neighbors": [
            {
                "system_name": "fusion2",
                "system_description": "ExaLINK Fusion",
                "chassis_id": [
                    100,
                    63,
                    95,
                    128,
                    25,
                    128
                ],
                "port_id_subtype": 5,
                "management_address": [
                    {
                        "address_subtype": 1,
                        "interface": 0,
                        "interface_subtype": 1,
                        "address": [172, 16, 0, 152]
                    }
                ],
                "chassis_id_subtype": 4,
                "port_id": [
                    65,
                    49
                ]
            }
        ]
    },
    "port": "A2",
    "id": 1
}

Parameters

Field Type mux Description
port string The port to request LLDP information from

Result

Field Type mux Description
port string Port the following information references
lldp boolean True if LLDP is set to transmit
mgmt_addr array See below
neighbor array See below

The management address field contains some or all of the following values:

Field Type mux Description
address_subtype number Value determines the format of the address field (MAC address or otherwise)
address string The address based on the substype
interface_subtype number The type of description of the management interface
interface string The name of the interface, based on the interface_subtype
oid number The OID of the system

A neighbor in the Fusion's LLDP agent will be returned with some or all of these fields:

Field Type mux Description
chassis_id_subtype number The category of chassis ID used in the LLDP entry
chassis_id string Corresponding string to the subtype of ID being provided
port_id string Name of the port connected to the neightbor
port_description string Description of the port connected to the neighbor
system_name string Name of the neighbor system
system_description string Description of the neighbor system
system_capabilities string All the capabilities of a neighbor system
enabled_capabilities string Capabilities of the neighbor currently enabled
management_address string Address of the neighbor

get_license

This method gets the licensed features and serial number of the Fusion.

Example (Python)
>>> fusion.get_license()
{u'serial': u'EXAFSN-A-00198', u'support_end': 1577836800, u'features': [u'switch'], u'expiry': 1577836800}
Example (json-rpc)
// Request
{
    "method": "get_license",
    "id": 1
}

// Response
{
    "result": {
        "serial": "EXAFSN-A-00198",
        "support_end": 1577836800,
        "features": ["switch"],
        "expiry": 1577836800
    },
    "id": 1
}

Parameters

None

Result

Field Type mux Description
serial string The serial number of the Fusion being queried
support_end integer The date support for this Fusion will end, as a Unix timestamp in seconds
features array A set of strings detailing the licensed features on the Fusion
expiry integer The date any features being evaluated will end, as a Unix timestamp in seconds

set_license

This method is used to set the license of the Fusion

Example (Python)
>>> fusion.set_license("license_string")
True
Example (json-rpc)
// Request
{
    "method": "set_license",
    "params": ["my_license_key_here"],
    "id": 1
}

// Response
{
    "result": true,
    "id": 1
}

Parameters

Field Type mux Description
key string The license key to be given to the Fusion

Result

True if successful.

get_running_config

This method returns information from the specified part of the running configuration.

Example (Python)
>>> fusion.get_running_config("patch")
{u'version': 1, u'patch': [[u'B1', u'C15'], [u'B2', u'Y9'], [u'B3', u'C5'], [u'B5', u'C13']]}
Example (json-rpc)
// Request
{
    "method": "get_running_config",
    "params": "patch",
    "id": 1
}

// Response
{
    "patch": [
        [
            "B1",
            "C15"
        ],
        [
            "B2",
            "Y9"
        ],
        [
            "B3",
            "C5"
        ],
        [
            "B5",
            "C13"
        ]
    ],
    "id": 1
}

Parameters

Field Type mux Description
category string The specific aspect of the running configuration to obtain information for.

Available categories: mgmt_net, session, users, roles, ports, patch, tap, module, switch, mux, mirror, time, service, tacacs

Result

The result format is based on the argument provided to the method, consult other sections for sections like TACACS or Modules.

get_startup_config

This method returns information from the specified part of the startup configuration.

Example (Python)
>>> fusion.get_startup_config("patch")
{u'version': 1, u'patch': [[u'B1', u'C15'], [u'B2', u'Y9'], [u'B3', u'C5'], [u'B5', u'C13']]}
Example (json-rpc)
// Request
{
    "method": "get_startup_config",
    "params": "patch",
    "id": 1
}

// Response
{
    "patch": [
        [
            "B1",
            "C15"
        ],
        [
            "B2",
            "Y9"
        ],
        [
            "B3",
            "C5"
        ],
        [
            "B5",
            "C13"
        ]
    ],
    "id": 1
}

Parameters

Field Type mux Description
category string The specific aspect of the running configuration to obtain information for.

Available categories: mgmt_net, session, users, roles, ports, patch, tap, module, switch, mux, mirror, time, service, tacacs

Result

The result format is based on the argument provided to the method, consult other sections for sections like TACACS or Modules.

erase_running_config

This method erases parts of the running configuration based on the arguments specified

Example (Python)
>>> fusion.erase_running_config(all=False, management=False, module=False, data_plane=True)
True
Example (json-rpc)
// Request
{
    "method": "erase_running_config",
    "params": {
        "all": false,
        "management": false,
        "data_plane": true,
        "module": false
    },
    "id": 1
}

// Response
{
    "result": true,
    "id": 1
}

Parameters

Field Type mux Description
all boolean True to erase all configuration on the Fusion, False to not erase.
management boolean True to erase all settings related to accessing the management interface, False to not erase.
data_plane boolean True to erase all settings related to object configuration, False to not erase.
module boolean True to erase all settings related to an internal module, False to not erase.

Result

True if successful.

erase_startup_config

This method will erase the startup configuration, restoring it to default settings. Unlike erase_running_config(), this will erase all of the config without needing to specify.

Example (Python)
>>> fusion.erase_startup_config()
True
Example (json-rpc)
// Request
{
    "method": "erase_startup_config",
    "id": 1
}

// Response
{
    "result": true,
    "id": 1
}

Parameters

None

Result

True if successful.

load_startup_config

This method will copy the current startup configuration to the running configuration. Note: This will reload the network settings, please wait some time before calling anymore methods.

Example (Python)
>>> fusion.load_startup_config()
True
Example (json-rpc)
// Request
{
    "method": "load_startup_config",
    "id": 1
}

// Response
{
    "result": true,
    "id": 1
}

Parameters

None

Result

True if successful.

save_startup_config

This method will copy the current running configuration to the starting configuration.

Example (Python)
>>> fusion.save_startup_config()
True
Example (json-rpc)
// Request
{
    "method": "save_startup_config",
    "id": 1
}

// Response
{
    "result": true,
    "id": 1
}

Parameters

None

Result

True if successful.

Diagnostics and Logging

read_current_sensors

This method can be used to return the reading from various voltage and current sensors within the ExaLINK Fusion.

Example (Python)
>>> fusion.read_current_sensors()
{u'line_card_a': {u'current': 0.43359375, u'voltage': 12.1875}, u'line_card_c': {u'current': 0, u'voltage': 12.265625}, u'line_card_b': {u'current': 0.6171875, u'voltage': 12.1875}, u'module_y': {u'current': 0, u'voltage': 12.265625}, u'module_x': {u'current': 2.5078125, u'voltage': 12.1875}}
Example (json-rpc)
// Request
{
    "method": "read_current_sensors",
    "id": 1
}

// Response
{
    "result": {
        "line_card_a": {
            "current": 0.4609375,
            "voltage": 12.1875
        },
        "line_card_c": {
            "current": 0.44140625,
            "voltage": 12.2265625
        },
        "line_card_b": {
            "current": 0.97265625,
            "voltage": 12.1484375
        },
        "module_y": {
            "current": 0,
            "voltage": 12.2265625
        },
        "module_x": {
            "current": 2.73046875,
            "voltage": 12.1875
        }
    },
    "id": 1
}

Parameters

None

Result

This will return an array of devices that are connected to the Fusion, their fields are as below:

Field Type mux Description
current number The current being drawn by the device
voltage number The voltage read at the device

read_power_supplies

This method can be used to query status information from the Power Supplies

Example (Python)
>>> fusion.read_power_supplies()
{u'psu_0': {u'pin': 105, u'vout': 12.171875, u'pout': 97, u'iout': 8.125, u'vin': 239, u'temp_2': 31.5, u'model': u'DS460', u'iin': 0.4375, u'temp_1': 25.5, u'present': True, u'manufacturer': u'EMERSON'}, u'psu_1': {u'pin': 0, u'vout': 0, u'pout': 0, u'iout': 0, u'vin': 0, u'temp_2': 30.5, u'model': u'DS460', u'iin': 0, u'temp_1': 29, u'present': True, u'manufacturer': u'EMERSON'}}
Example (json-rpc)
// Request
{
    "method": "read_power_supplies",
    "id": 1
}

// Response
{
    "result": {
        "psu_0": {
            "pin": 85,
            "vout": 12.234375,
            "pout": 67,
            "iout": 5.875,
            "vin": 217.5,
            "temp_2": 31.5,
            "model": "DS460",
            "iin": 0.390625,
            "temp_1": 25,
            "present": true,
            "manufacturer": "EMERSON"
        },
        "psu_1": {
            "pin": 0,
            "vout": 0,
            "pout": 0,
            "iout": 0,
            "vin": 0,
            "temp_2": 24.5,
            "model": "DS460",
            "iin": 0,
            "temp_1": 23.5,
            "present": true,
            "manufacturer": "EMERSON"
        }
    },
    "id": 1
}

Parameters

None

Result

This method returns two sets of results for both power supply slots in the Fusion.

Field Type mux Description
pin number Input power drawn by the power supply
vout number Output voltage from the power supply
pout number Output power from the power supply
iout number Output current from the power supply
vin number Input voltage to the power supply
temp_2 number Internal temperature of the power supply
model string Model number of the power supply
iin number Input current drawn by the power supply
temp_1 number External temperature of the power supply
present boolean True if power supply has been plugged into the appropriate slot
manufacturer string Manufacturer of the power supply

read_temperature_sensors

This method can be used to query the various temperature sensors within the ExaLINK Fusion

Example (Python)
>>> fusion.read_temperature_sensors()
{u'crosspoint': [39.50, 40.41, 38.67, 37.8], u'module_x': [36, 41], u'mainboard': [29.625, 33], u'line_card_a': [37.4], u'line_card_c': [35.1], u'line_card_b': [31.6]}
Example (json-rpc)
// Request
{
    "method": "read_temperature_sensors",
    "id": 1
}

// Response
{
    "result": {
        "crosspoint": [39.50, 40.41, 38.67, 37.8],
        "module_x": [37, 41],
        "mainboard": [29.625, 33],
        "line_card_a": [37.4],
        "line_card_c": [35.1],
        "line_card_b": [31.6]
    },
    "id": 1
}

Parameters

None

Result

This returns an array of devices in the Fusion, each with their temperature reading. NB some devices have multiple sensors.

read_fan_speeds

This method can be used to query the speed of the fan modules installed in the ExaLINK Fusion

Example (Python)
>>> fusion.read_fan_speeds()
{u'fan_3': 7108, u'fan_2': 7113, u'fan_1': 7155, u'fan_0': 7199}
Example (json-rpc)
// Request
{
    "method": "read_fan_speeds",
    "id": 1
}

// Response
{
    "result": {
        "fan_3": 7108,
        "fan_2": 7113,
        "fan_1": 7155,
        "fan_0": 7199
    },
    "id": 1
}

Parameters

None

Result

Returns a list of the four fans and their RPM.

get_port_latency_histogram

Obtain a tabulated set of histogram data of latency for a specific port.

Example (Python)
>>> fusion.get_port_latency_histogram(port="B1", interval=1)
Example (json-rpc)
// Request
{
    "method": "get_port_latency_histogram",
    "params": {
        "interval": 1,
        "port": "B1"
    },
    "id": 1
}

// Response
{
    "result": {
        "port": "B1",
        "data": [
            [
                [ 81, 86.714285714285708 ],
                3722813
            ]
        ]
    },
    "id": 1
}

Parameters

Field Type mux Description
port string The port to obtain latency statistics for
interval integer Class width of the histogram to obtain

Result

An array of sets of data, representing the percentile, latency number and packet count.

set_tacacs_servers

This method is used to set the server the TACACS is being hosted on.

Example (Python)
>>> fusion.set_tacacs_servers("172.16.0.13")
0
Example (json-rpc)
// Request
{
    "method": "set_tacacs_servers",
    "params": ["172.16.0.13"],
    "id": 1
}

// Response
{
    "result": 0,
    "id": 1
}

Parameters

Field Type mux Description
server string The IP address of the TACACS server

Result

0 if successful.

set_tacacs_secret

This method is used to set the TACACS secret key to be used on the Fusion.

Example (Python)
>>> fusion.set_tacacs_secret("asdasdasdasd")
0
Example (json-rpc)

// Request { "method": "set_tacacs_secret", "params": ["asdasdasdasd"], "id": 1 }

// Response { "result": 0, "id": 1 }

Parameters

Field Type mux Description
secret string Key to be used to try and access the TACACS server

Result

0 if succesfully set the key on the Fusion.

set_tacacs_accounting

This method is used to set the SNMP field

Example (Python)
>>> fusion.set_tacacs_accounting()
0
Example (json-rpc)
// Request
{
    "method": "set_tacacs_accounting",
    "params": ["verbose"],
    "id": 1
}

// Response
{
    "result": 0,
    "id": 1
}

Parameters

Field Type mux Description
mode string The level of logging to be used on the TACACS server (disabled, standard, verbose)

Result

0 if successful.

set_tacacs_timeout

This method is used to set the TACACS request timeout.

Example (Python)
>>> fusion.set_tacacs_timeout(100.0)
0
Example (json-rpc)

Parameters

// Request
{
    "method": "set_tacacs_timeout",
    "params": [100.0],
    "id": 1
}

// Response
{
    "result": 0,
    "id": 1
}
Field Type mux Description
timeout float Number (in seconds) for TACACS request timeouts (limited to 1 decimal place)

Result

0 if successful.

set_tacacs_periodic

This method is used to set the time between periodic permission checking with the TACACS server and Fusion.

Example (Python)
>>> fusion.set_tacacs_periodic(120)
0
Example (json-rpc)
// Request
{
    "method": "set_tacacs_periodic",
    "params": [120],
    "id": 1
}

// Response
{
    "result": 0,
    "id": 1
}

Parameters

Field Type mux Description
time integer Time (in seconds) between regular checking of user permissions with the TACACS server and Fusion

Result

0 if successful.

set_snmp_location

This method is used to set the SNMP field.

Example (Python)
>>> fusion.set_snmp_location("Server room")
0
Example (json-rpc)
// Request
{
    "method": "set_snmp_location",
    "params": ["Server room"],
    "id": 1
}

// Response
{
    "result": 0,
    "id": 1
}

Parameters

Field Type mux Description
location string Name to be used in the SNMP Location field.

Result

0 if successful.

set_snmp_contact

This method is used to set the SNMP Contact field

Example (Python)
>>> fusion.set_snmp_contact("Admin")
0
Example (json-rpc)
// Request
{
    "method": "set_snmp_location",
    "params": ["Server room"],
    "id": 1
}

// Response
{
    "result": 0,
    "id": 1
}

Parameters

Field Type mux Description
location string Name to be used in the SNMP Location field.

Result

0 if successful.

set_snmp_contact

This method is used to set the SNMP Contact field

Example (Python)
>>> fusion.set_snmp_contact("Admin")
0
Example (json-rpc)

Parameters

// Request
{
    "method": "set_snmp_contact",
    "params": ["Admin"],
    "id": 1
}

// Response
{
    "result": 0,
    "id": 1
}
Field Type mux Description
contact string Name to be used in the SNMP Contact field.

Result

0 if successful.

set_snmp_read_community

Use this to set the community name to be used in the Fusion’s SNMP setting.

Example (Python)
>>> fusion.set_snmp_read_community("test-community")
0
Example (json-rpc)
// Request
{
    "method": "set_snmp_read_community",
    "params": "test-community",
    "id": 1
}

// Response
{
    "result": "0",
    "id": 1
}

Parameters

Field Type mux Description
community string Name of the community name to be used in the SNMP setting.

Result

0 if successful.

set_snmp_port

Example (Python)
>>> fusion.set_snmp_port()
0
Example (json-rpc)
// Request
{
    "method": "set_snmp_port",
    "params": ["161"],
    "id": 1
}

// Response
{
    "result": 0,
    "id": 1
}

Parameters

Field Type mux Description
port integer Port number to communicate with the SNMP destination on

Result

0 if successful.

enable_service_tacacs

This method is used to enable TACACS on the Fusion.

Example (Python)
>>> fusion.enable_service_tacacs()
0
Example (json-rpc)
// Request
{
    "method": "enable_service_tacacs",
    "id": 1
}

// Response
{
    "result": 0,
    "id": 1
}

Parameters

None

Result

0 if successful.

enable_service_snmp

This method is used to enable SNMP on the Fusion.

Example (Python)
>>> fusion.enable_service_snmp()
0
Example (json-rpc)
// Request
{
    "method": "enable_service_snmp",
    "id": 1
}

// Response
{
    "result": 0,
    "id": 1
}

Parameters

None

Result

0 if successful.

enable_service_snmptrap

This method is used to enable SNMP traps targetting configured hosts.

Example (Python)
>>> fusion.enable_service_snmptrap()
0
Example (json-rpc)
// Request
{
    "method": "enable_service_snmptrap",
    "id": 1
}

// Response
{
    "result": 0,
    "id": 1
}

Parameters

None

Result

0 if successful.

disable_service_tacacs

This method disables TACACS on the Fusion (reverting to internal authentication).

Example (Python)
>>> fusion.disable_service_tacacs()
0
Example (json-rpc)
// Request
{
    "method": "disable_service_tacacs",
    "id": 1
}

// Response
{
    "result": 0,
    "id": 1
}

Parameters

None

Result

0 if successful.

disable_service_snmp

This method disables SNMP on the Fusion.

Example (Python)
>>> fusion.disable_service_snmp()
0
Example (json-rpc)
// Request
{
    "method": "disable_service_snmp",
    "id": 1
}

// Response
{
    "result": 0,
    "id": 1
}

Parameters

None

Result

0 if successful.

disable_service_snmptrap

This method disables SNMP Traps on the Fusion.

Example (Python)
>>> fusion.disable_service_snmptrap()
0
Example (json-rpc)
// Request
{
    "method": "disable_service_snmptrap",
    "id": 1
}

// Response
{
    "result": 0,
    "id": 1
}

Parameters

None

Result

0 if successful.

get_service_snmp

This method is used to determine the status of SNMP on the Fusion.

Example (Python)
>>> fusion.get_service_snmp()
0
Example (json-rpc)
// Request
{
    "method": "get_service_snmp",
    "id": 1
}

// Response
{
    "result": {
        "service": "snmp",
        "enabled": true
    },
    "id": 1
}

Parameters

None

Result

Field Type mux Description
service string Name of the service (i.e. SNMP)
enabled boolean True if enabled, False if not

set_snmptrap_target

Example (Python)
>>> fusion.set_snmptrap_target()
0
Example (json-rpc)
// Request
{
    "method": "set_snmptrap_target",
    "params": {
        "community": "public",
        "address": "172.16.0.229"
    },
    "id": 1
}

// Response
{
    "result": 0,
    "id": 1

}

Parameters

Field Type mux Description
community string Name of the community to be used for SNMP traps
address string The IP address to target for SNMP traps

Result

0 if successful.

get_snmptrap_config

Get current SNMP Trap configuration.

Example (Python)
>>> fusion.get_snmptrap_config()
    {u'to': [{u'community': u'public', u'address': u'172.16.0.220'}, {u'community': u'private-ro', u'address': u'172.16.0.121'}, {u'community': u'public', u'address': u'172.16.0.229'}, {u'community': u'public', u'address': u'172.16.0.229'}, {u'community': u'public', u'address': u'172.16.0.229'}], u'enabled': True}
Example (json-rpc)
// Request
{
    "method": "get_snmptrap_config",
    "id": 1
}

// Response
{
    "result": {
        "to":
            [
                {
                    "address": "172.16.0.220",
                    "community": "public"
                },
                {
                    "address": "172.16.0.121",
                    "community": "private-ro"
                },
                {
                    "address": "172.16.0.229",
                    "community": "public"
                }
            ],
        "enabled": true },
    "id": 1
}

Parameters

Field Type mux Description
all boolean True to erase all configuration on the Fusion, False to not erase.

Result

0 if successful.

get_messages

Get a list of error and warning messages from the Fusion.

Example (Python)
>>> fusion.get_messages()
{u'warning': [], u'error': []}
Example (json-rpc)
// Request
{
    "method": "get_messages",
    "id": 1
}

// Response
{
    "result": {
        "error": [ ],
        "warning": [ ]
    },
    "id": 1
}

Parameters

Field Type mux Description
error string Any messages pertaining to any errors having occurred on the Fusion.
warning string Any messages pertaining to any warnings generated by the Fusion.

get_switch_stats

Get switch statistics from the Fusion

Example (Python)
>>> fusion.get_switch_stats()
{u'used_memory': 0}
Example (json-rpc)
// Request
{
    "method": "get_switch_stats",
    "id": 1
}
// Response
{
    "result": {
        "used_memory": 0
    },
    "id": 1
}

Parameters

Field Type mux Description
used_memory integer Packet buffer memory usage (Fusion HPT only)

debug_dump

This method generates a debug file on the Fusion that can be retrieved via SFTP.

Example (Python)
>>> fusion.debug_dump()
debug/debug_info_20161021T032122.tar.gz
Example (json-rpc)
// Request
{
    "method": "debug_dump",
    "id": 1
}
// Response
{
    "result": "debug\/debug_info_20161021T032122.tar.gz",
    "id": 1
}

Parameters

None

Result

The name and path to the debug file on the Fusion.

Port Status and Configuration

get_ports

This method can be used to get status information for one or more ports

Example (Python)
>>> fusion.get_ports("A1")
[{u'data_rate': u'ethernet_10g', u'name': u'A1', u'sfp_type': u'auto', u'enabled': False, u'alias': u'myalias', u'address': u'643F5F000000', u'has_signal': True, u'autoneg': True, u'present': True, u'description': u''}]
>>>
>>>
>>> fusion.get_ports("A10","A11","B16")
[{u'lldp_transmit': False, u'data_rate': u'ethernet_10g', u'description': u'', u'in_use': False, u'sfp_type': u'auto', u'enabled': True, u'alias': u'', u'address': u'643F5F801999', u'has_signal': False, u'autoneg': True, u'present': False, u'name': u'A10'}, {u'lldp_transmit': False, u'data_rate': u'ethernet_10g', u'description': u'', u'in_use': False, u'sfp_type': u'auto', u'enabled': True, u'alias': u'', u'address': u'643F5F80199A', u'has_signal': False, u'autoneg': True, u'present': False, u'name': u'A11'}, {u'lldp_transmit': False, u'data_rate': u'ethernet_10g', u'description': u'', u'in_use': False, u'sfp_type': u'auto', u'enabled': True, u'alias': u'', u'address': u'643F5F8019AF', u'has_signal': True, u'autoneg': True, u'present': True, u'name': u'B16'}]
Example (json-rpc)
// Request
{
    "method": "get_ports",
    "params": [
        "A1"
    ],
    "id": 1
}

// Response
{
    "result": [
        {
            "data_rate": "ethernet_10g",
            "name": "A1",
            "sfp_type": "auto",
            "enabled": false,
            "alias": "myalias",
            "address": "643F5F000000",
            "has_signal": false,
            "autoneg": true,
            "present": false,
            "description": ""
        }
    ],
    "id": 1
}

Parameters

This method can be provided with a list of port names as an array of strings. If no parameters are provided, information is returned for all ports.

Result

This method returns an array of objects with the following fields:

Field Type mux Description
name string The name of the port the data is being returned for
alias string The alias of the port
address string The MAC address of the port(s) being requested
description string The description of the port
data_rate string Port data rate, either ethernet_10g or ethernet_1g
sfp_type string Configured SFP type, either auto or active or passive
enabled boolean True if the port is enabled
autoneg boolean True if autonegotiation is enabled on the port
present boolean True if the SFP is present
has_signal boolean True if the SFP is not reporting loss-of-signal
in_use boolean True if the port is in use in the current configuration

set_port_alias

This method can be used to set the alias for a port. The alias can be used on the ExaLINK Fusion command line to identify the port in place of the port name.

Note that the alias cannot be used to identify the port in API calls.

Example (Python)
>>> fusion.set_port_alias(port="A1",alias="myalias")
True
Example (json-rpc)
// Request
{
    "method": "set_port_alias",
    "params": {
        "port": "A1",
        "alias": "myalias"
    },
    "id": 1
}

// Response
{
    "result": true,
    "id": 1
}

Parameters

Field Type mux Description
port string The port you wish to set the alias for, in Exablaze standard format, e.g. A1.
alias string The alias you wish to use for this port. Note only the alias can only consist of A-Z, a-z, 0-9, - and _ characters. An alias must not be a normal port name (eg A1). It must also not be a number, or a number with a single letter prefix and/or suffix

Result

True if successful

set_port_description

This method can be used to set a description associated with a particular port.

Example (Python)
>>> fusion.set_port_description(port="A1",description="A verbose description of this port")
True
Example (json-rpc)
// Request
{
    "method": "set_port_description",
    "params": {
        "port": "A1",
        "description": "a verbose description of this port"
    },
    "id": 1
}

// Response
{
    "result": true,
    "id": 1
}

Parameters

Field Type mux Description
port string The port you wish to set the description for, in Exablaze standard format, eg A1
description string The description you wish to set for this port

Result

True if successful.

get_port_sfp_info

This method can be used to query the diagnostic interface on a SFP. The fields in the returned data closely follow the fields as defined in the SFP MSA. Please refer to the SFP MSA Specification for further details.

Example (Python)
>>> fusion.get_port_sfp_info(port="B1")
{u'vendor_pn': u'BN-CKM-SP-SR', u'date_code': u'120717', u'vendor_oui': [0, 23, 106], u'serial_encoding': 6, u'vendor_sn': u'AD1229A0112', u'nominal_bit_rate': 10300, u'connector_type': 7, u'vendor_rev': u'G2.3', u'wavelength': 850, u'vendor_name': u'Blade Network', u'port': u'B1', u'transceiver_code': [16, 0, 0, 0, 0, 0, 0, 0]}
Example (json-rpc)
// Request
{
    "method": "get_port_sfp_info",
    "params": {
        "port": "B1"
    },
    "id": 1
}

// Response
{
    "result": {
        "vendor_pn": "BN-CKM-SP-SR",
        "date_code": "120717",
        "vendor_oui": [
            0,
            23,
            106
        ],
        "serial_encoding": 6,
        "vendor_sn": "AD1229A0112",
        "nominal_bit_rate": 10300,
        "connector_type": 7,
        "vendor_rev": "G2.3",
        "wavelength": 850,
        "vendor_name": "Blade Network",
        "port": "B1",
        "transceiver_code": [
            16,
            0,
            0,
            0,
            0,
            0,
            0,
            0
        ]
    },
    "id": 1

}

Parameters

Field Type mux Description
port string The name of the port to be queried

Result

Field Type Description
port string Port name
vendor_oui array SFP vendor IEEE company identifier, as an array of 3 bytes
vendor_name string SFP vendor name
vendor_pn string Part number provided by SFP vendor
vendor_rev string Revision level provided by SFP vendor
connector_type integer Connector type code provided by SFP
transceiver_code array Transceiver code provided by SFP
serial_encoding integer Serial encoding used by SFP
nominal_bit_rate integer Nominal bit rate reported by SFP
wavelength integer Laser wavelength reported by SFP

get_port_sfp_diagnostics

This method returns diagnostic information retreived from a SFP inserted into a port.

Example (Python)
>>> fusion.get_port_sfp_diagnostics(port="A1")
{u'vcc': 3.2734, u'temperature': 34.81640625, u'tx_bias': 3.791, u'tx_power': 0.6558, u'rx_power': 0.641, u'port': u'A1'}
Example (json-rpc)
// Request
{
    "method": "get_port_sfp_diagnostics",
    "params": {
        "port": "A1"
    },
    "id": 1
}

// Response
{
    "result": {
        "vcc": 3.2734,
        "temperature": 34.81640625,
        "tx_bias": 3.791,
        "tx_power": 0.6558,
        "rx_power": 0.641,
        "port": "A1"
    },
    "id": 1
}

Parameters

Field Type mux Description
Port string The name of the port to be queried

Result

Field Type Description
port string Port name
temperature number Temperature (degC)
vcc number Supply voltage (V)
tx_bias number Measured TX bias current (mA)
tx_power number Measured TX output power (mW)
rx_power number Measured RX input power (mW)

set_port_data_rate

This method can be used to configure the data rate that a port should operate at.

Example (Python)
>>> fusion.set_port_data_rate(port="A1", data_rate="ethernet_1g")
True
>>> fusion.set_port_data_rate(port="V1A", data_rate="ethernet_10g")
True
Example (json-rpc)
// Request
{
    "method": "set_port_data_rate",
    "params": {
        "port":"A1",
        "data_rate":"ethernet_1g"
    },
    "id": 1
}

// Response
{
    "result": true,
    "id": 1
}

Parameters

Field Type mux Description
port string The name of the port you wish to retrieve SFP status info for
data_rate string The data rate you wish the port to operate at: ethernet_10g or ethernet_1g

Result

True if successful.

get_port_stats

This method obtains the port statistics from a specific port.

Example (Python)
>>> fusion.get_port_stats("A1")
{u'rx_128_255b': 3653009, u'tx_64b': 0, u'tx_256_511b': 0, u'rx_65_127b': 1713621, u'rx_256_511b': 7307595, u'rx_link_changes': 0, u'tx_multicast': 0, u'port': u'A1', u'tx_512_1023b': 0, u'rx_multicast': 0, u'rx_1024_1518b': 14123282, u'rx_link': True, u'tx_1519_1522b': 0, u'rx_runt': 0, u'tx_packets': 0, u'lldp_rx': True, u'rx_packets': 41411108, u'rx_unicast': 0, u'rx_1519_1522b': 0, u'tx_128_255b': 0, u'rx_broadcast': 41411108, u'tx_bytes': 0, u'rx_dropped': 13669377, u'tx_unicast': 0, u'rx_bytes': 32835757254, u'tx_errors': 0, u'rx_64b': 0, u'rx_pause': 0, u'rx_512_1023b': 14613601, u'tx_broadcast': 0, u'rx_errors': 0, u'tx_1024_1518b': 0, u'tx_65_127b': 0}
>>>
>>>
>>> fusion.get_port_stats("B2", "B1")
[{u'rx_128_255b': 3653009, u'tx_64b': 0, u'tx_256_511b': 0, u'rx_65_127b': 1713621, u'rx_256_511b': 7307595, u'rx_link_changes': 0, u'tx_multicast': 0, u'port': u'B1', u'tx_512_1023b': 0, u'rx_multicast': 0, u'rx_1024_1518b': 14123282, u'rx_link': True, u'tx_1519_1522b': 0, u'rx_runt': 0, u'tx_packets': 0, u'lldp_rx': True, u'rx_packets': 41411108, u'rx_unicast': 0, u'rx_1519_1522b': 0, u'tx_128_255b': 0, u'rx_broadcast': 41411108, u'tx_bytes': 0, u'rx_dropped': 13669377, u'tx_unicast': 0, u'rx_bytes': 32835757254, u'tx_errors': 0, u'rx_64b': 0, u'rx_pause': 0, u'rx_512_1023b': 14613601, u'tx_broadcast': 0, u'rx_errors': 0, u'tx_1024_1518b': 0, u'tx_65_127b': 0}, {u'rx_128_255b': 0, u'tx_64b': 0, u'tx_256_511b': 22949296, u'rx_65_127b': 1110, u'rx_256_511b': 530, u'rx_link_changes': 0, u'tx_multicast': 0, u'port': u'B2', u'tx_512_1023b': 45979983, u'rx_multicast': 1110, u'rx_1024_1518b': 0, u'rx_link': True, u'tx_1519_1522b': 378861, u'rx_runt': 0, u'tx_packets': 131227642, u'rx_packets': 1640, u'rx_unicast': 0, u'rx_1519_1522b': 0, u'tx_128_255b': 11461092, u'rx_broadcast': 530, u'tx_bytes': 106789190969, u'rx_dropped': 0, u'tx_unicast': 0, u'rx_bytes': 277952, u'tx_errors': 0, u'rx_64b': 0, u'rx_pause': 0, u'rx_512_1023b': 0, u'tx_broadcast': 131227642, u'rx_errors': 0, u'tx_1024_1518b': 45373309, u'tx_65_127b': 3946960}]
Example (json-rpc)
// Request
{
    "method":"get_port_stats",
    "params": [
        "B2", "B1"
    ],
    "id": 1
}

// Response
{
    "result": [
        {
            "port":"B1",
            "rx_link":true,
            "rx_link_changes":0,
            "lldp_rx":true,
            "rx_packets":41411108,
            "rx_unicast":0,
            "rx_multicast":0,
            "rx_broadcast":41411108,
            "rx_64b":0,
            "rx_65_127b":1713621,
            "rx_128_255b":3653009,
            "rx_256_511b":7307595,
            "rx_512_1023b":14613601,
            "rx_1024_1518b":14123282,
            "rx_1519_1522b":0,
            "rx_bytes":32835757254,
            "rx_errors":0,
            "rx_dropped":13669377,
            "rx_runt":0,
            "rx_pause":0,
            "tx_packets":0,
            "tx_unicast":0,
            "tx_multicast":0,
            "tx_broadcast":0,
            "tx_64b":0,
            "tx_65_127b":0,
            "tx_128_255b":0,
            "tx_256_511b":0,
            "tx_512_1023b":0,
            "tx_1024_1518b":0,
            "tx_1519_1522b":0,
            "tx_bytes":0,
            "tx_errors":0
        },
        {
            "port":"B2",
            "rx_link":true,
            "rx_link_changes":0,
            "lldp_rx":true,
            "rx_packets":1640,
            "rx_unicast":0,
            "rx_multicast":1110,
            "rx_broadcast":530,
            "rx_64b":0,
            "rx_65_127b":1110,
            "rx_128_255b":0,
            "rx_256_511b":530,
            "rx_512_1023b":0,
            "rx_1024_1518b":0,
            "rx_1519_1522b":0,
            "rx_bytes":277952,
            "rx_errors":0,
            "rx_dropped":0,
            "rx_runt":0,
            "rx_pause":0,
            "tx_packets":131227642,
            "tx_unicast":0,
            "tx_multicast":0,
            "tx_broadcast":131227642,
            "tx_64b":0,
            "tx_65_127b":3946960,
            "tx_128_255b":11461092,
            "tx_256_511b":22949296,
            "tx_512_1023b":45979983,
            "tx_1024_1518b":45373309,
            "tx_1519_1522b":378861,
            "tx_bytes":106789190969,
            "tx_errors":0
        }
    ]
}

Parameters

This method can be provided with a list of port names as an array of strings.

Result

Field Type mux Description
port string Port name
rx_link boolean True if port has link with another interface
rx_link_changes number Counter of times rx_link has changed state
lldp_rx boolean True if LLDP traffic is received on this port
rx_packets number Number of packets received on the port
rx_unicast number Number of unicast packets received on the port
rx_multicast number Number of multicast packets recevied on the port
rx_broadcast number Number of broadcast packets recevied on the port
rx_64b number Number of 64b frames received on the port
rx_65_127b number Number of 65-127b frames received on the port
rx_128_255b number Number of 128-255b frames received on the port
rx_256_511b number Number of 256-511b frames received on the port
rx_512_1023b number Number of 512-1023b frames received on the port
rx_1024_1518b number Number of 1024-1518b frames received on the port
rx_1519-1522b number Number of 1519-1522b frames received on the port
rx_bytes number Raw number of bytes received on the port
rx_errors number Number of corrupt packets received on the port
rx_dropped number Number of packets dropped by the port
rx_runt number Number of runt frames received on the port
rx_pause number Number of pause frames received on the port
tx_packets number Number of packets sent by the port
tx_unicast number Number of unicast packets sent by the port
tx_multicast number Number of multicast packets sent by the port
tx_broadcast number Number of broadcast packets sent by the port
tx_64b number Number of 64b frames sent by the port
tx_65_127b number Number of 65-127b frames sent by the port
tx_128_255b number Number of 128-255b frames sent by the port
tx_256_511b number Number of 256-511b frames sent by the port
tx_512_1023b number Number of 512-1023b frames sent by the port
tx_1024_1518b number Number of 1024-1518b frames sent by the port
tx_1519_1522b number Number of 1519-1522b frames sent by the port
tx_bytes number Raw number of bytes sent by the port
tx_errors number Number of corrupt packets sent by the port

All fields are optional. A field will be omitted if the statistic is not available for the port.

Note when querying the stats of multiple ports will return an array consisting of entries in this format. Order of the entries is dependant on the order given when calling get_port_stats().

create_virtual_port

This method creates a virtual port with a specified name. Note that if the virtual port is going to be used in a switch, mux or mirror object, the data rate must be set using the set_port_data_rate function.

Example (Python)
>>> fusion.create_virtual_port(name="V1")
True
Example (json-rpc)
// Request
{
    "method":"create_virtual_port",
    "params": {
        "name":"V1"
    },
    "id": 1
}

// Response
{
    "result": true,
    "id": 1
}

Parameters

Field Type Description
name string The name of the virtual port to be created

Result

True if successful.

delete_virtual_port

This method is used to delete a specified virtual port. Note: The virtual port must be removed from all network objects before this can be used.

Example (Python)
>>> fusion.create_virtual_port(name="V1")
True
Example (json-rpc)
// Request
{
    "method":"delete_virtual_port",
    "params": {
        "name":"V1"
    },
    "id": 1
}

// Response
{
    "result": true,
    "id": 1
}

Parameters

Field Type mux Description
name string The name of the virtual port to be deleted

Result

True if successful.

get_virtual_ports

This method is used to see all current virtual ports and the descriptions for them

Example (Python)
>>> fusion.get_virtual_ports()
[{u'alias': u'', u'data_rate': u'ethernet_10g', u'name': u'V1A', u'description': u''}, {u'alias': u'', u'data_rate': u'ethernet_10g', u'name': u'V1B', u'description': u''}, {u'alias': u'', u'data_rate': u'ethernet_10g', u'name': u'V2A', u'description': u''}, {u'alias': u'', u'data_rate': u'ethernet_10g', u'name': u'V2B', u'description': u''}]
Example (json-rpc)
// Request
{
    "method":"get_virtual_port",
    "id": 1
}

// Response
{
    "result": [
        {
            "alias": "",
            "data_rate": "ethernet_10g",
            "name": "V1A",
            "description": ""
        },
        {
            "alias": "",
            "data_rate": "ethernet_10g",
            "name": "V1B",
            "description": ""
        },
        {
            "alias": "",
            "data_rate": "ethernet_10g",
            "name": "V2A",
            "description": ""
        },
        {
        "alias": "",
        "data_rate": "ethernet_10g",
        "name": "V2B",
        "description": ""
        }
    ],
    "id": 1
}

Parameters

None

Result

Each virtual port entry consists of the following fields:

Field Type mux Description
alias string The alias assigned to the virtual port
data_rate string The data rate of the virtual port, either ethernet_10g or ethernet_1g
name string The name of the virtual port given when it was created
description string The description assigned to the virtual port

set_port_enable

This method can be used to enable or disable a port. Disabled ports remain members of any objects they were part of (for example a downstream port in a mux object), however the receiver and transmitter within that port are disabled.

Example (Python)
>>> fusion.set_port_enable(port="A1", enable=0)
True
Example (json-rpc)
// Request
{
    "method":"set_port_enable",
    "params": {
        "port":"A1",
        "enable":0
    },
    "id": 1
}

// Response
{
    "result": true,
    "id": 1
}

Parameters

Field Type mux Description
port string The port name to set the state of
enable boolean True if the port should be enabled

Result

True if successful.

reset_port_stats

This method is to reset all packet statistics on a port to zero.

Example (Python)
>>> fusion.reset_port_stats("A1")
True
Example (json-rpc)
// Request
{
    "method":"reset_port_stats",
    "params":"A1",
    "id": 1
}

// Response
{
    "result": true,
    "id": 1
}

Parameters

Field Type mux Description
port string The port name to reset

Result

True if successful.

Patches and Taps

create_patch

Create a new patch between two ports.

Example (Python)
>>> fusion.create_patch(ports=["A10","C1"])
true
Example (json-rpc)
// Request
{
    "method":"create_patch",
    "params": {
        "ports": ["A10", "C1"]
    },
    "id": 1
}

// Response
{
    "result": true,
    "id": 1
}

Parameters

Field Type mux Description
ports array The pair of ports to be patched. This must be an array of 2 elements.

Result

True if successful.

delete_patch

Remove an existing patch between two ports.

Example (Python)
>>> fusion.delete_patch(ports=["A10","C1"])
True
Example (json-rpc)
// Request
{
    "method":"delete_patch",
    "params": {
        "ports": ["A10", "C1"]
    },
    "id": 1
}

// Response
{
    "result": true,
    "id": 1
}

Parameters

Field Type mux Description
ports array The ports of an existing patch

Result

True if successful.

get_patch

Get the list of currently configured patches.

Example (Python)
>>> fusion.get_patch()
[[u'A10', u'C1']]
Example (json-rpc)
// Request
{
    "method": "get_patch",
    "id": 1
}

// Response
{
    "result": [
        [
            "A10",
            "C1"
        ]
    ],
    "id": 1
}

Parameters

None

Result

A list of the currently active patches.

create_tap

Create a tap on a port.

A tap replicates data flow at layer 1 and sends it out another port. The data flow on the tapped port is not disturbed.

Example (Python)
>>> fusion.create_tap(port="A16", src_port="A10", direction="output")
True
Example (json-rpc)
// Request
{
    "method": "create_tap",
    "params": {
        "port":"A16",
        "src_port": "A10",
        "direction": "output"
    },
    "id": 1
}

// Response
{
    "result": true,
    "id": 1
}

Parameters

Field Type mux Description
port string Output port for tapped data
src_port string Port to be tapped
direction string Data direction to be tapped, either input or output

Result

True if successful.

delete_tap

Remove an existing tap on a port.

Example (Python)
>>> fusion.delete_tap(port="A16", src_port="A10", direction="output")
True
Example (json-rpc)
// Request
{
    "method": "delete_tap",
    "params": {
        "port":"A16",
        "src_port": "A10",
        "direction": "output"
    },
    "id": 1
}

// Response
{
    "result": true,
    "id": 1
}

Parameters

Field Type mux Description
port string Output port of the tap
src_port string Tapped port
direction string Data direction of the tap, either input or output

Result

True if successful.

get_tap

Get the list of currently configured taps.

Example (Python)
>>> fusion.get_tap()
[{u'direction': u'output', u'src_port': u'A10', u'port': u'A16'}]
Example (json-rpc)
// Request
{
    "method": "delete_tap",
    "params": {
        "port":"A16",
        "src_port": "A10",
        "direction": "output"
    },
    "id": 1
}

// Response
{
    "result": true,
    "id": 1
}

Parameters

Field Type mux Description
port string Output port of the tap
src_port string Tapped port
direction string Data direction of the tap, either input or output

Result

True if successful.

get_tap

Get the list of currently configured taps.

Example (Python)
>>> fusion.get_tap()
[{u'direction': u'output', u'src_port': u'A10', u'port': u'A16'}]
Example (json-rpc)
// Request
{
    "method": "get_tap",
    "id": 1
}

// Response
{
    "result": [
        { "direction":"output", "src_port":"A10", "port":"A16" }
    ],
    "id": 1
}

Parameters

None

Result

Field Type mux Description
port string Output port of the tap
src_port string Tapped port
direction string Data direction of the tap, either input or output

Switches and Muxes

get_object

This method returns a list of currently configured objects.

Example (Python)
>>> fusion.get_object()
[{u'object': {u'type': u'switch', u'name': u'my_switch'}, u'ports': [{u'port': u'A1'}, {u'port': u'A2'}, {u'port': u'A3'}, {u'port': u'A4'}]}, {u'object': {u'type': u'mux', u'name': u'my_mux'}, u'mode': u'layer2', u'ports': [{u'port': u'B1', u'side': u'up'}, {u'port': u'B2', u'side': u'down'}, {u'port': u'B3', u'side': u'down'}, {u'port': u'B4', u'side': u'down'}]}]
Example (json-rpc)
// Request
{
    "method": "get_object",
    "id": 1
}

// Response
{
    "result": [
        {
        "object": {
            "type": "switch",
            "name": "my_switch"
        },
        "ports": [
            {
            "port": "A1"
            },
            {
            "port": "A2"
            },
            {
            "port": "A3"
            },
            {
            "port": "A4"
            }
        ]
        },
        {
        "object": {
            "type": "mux",
            "name": "my_mux"
        },
        "mode": "layer2",
        "ports": [
            {
                "port": "B1",
                "side": "up"
            },
            {
                "port": "B2",
                "side": "down"
            },
            {
                "port": "B3",
                "side": "down"
            },
            {
                "port": "B4",
                "side": "down"
            }
        ]
        }
    ],
    "id": 1
}

Parameters

None

Result

The returned data is an array of objects with the following fields:

Field Type mux Description
type string Object type: switch or mux
name string Name of object
mode string Object mode if applicable: raw or layer2 for mux objects
enable_vlan boolean True if VLAN support is enabled for this object, omitted otherwise
ports array Information about ports in the object

Each entry in the ports array has the following fields:

Field Type mux Description
port string Port name
side string up for upstream port, or down for downstream port (mux only)
vlan_id integer VLAN ID used by this port (VLAN tagging ports only)
block array A list of blocked output ports (omitted if no ports are blocked)

create_object

Create a new switch or mux object.

Example (Python)
>>> fusion.create_object(type="mux", name="my_mux", mode="layer2")
True
Example (json-rpc)
// Request
{
    "method":"create_object",
    "params": {
        "type":"mux",
        "name":"my_mux",
        "mode":"layer2"
    },
    "id": 1
}

// Response
{
    "result": true,
    "id": 1
}

Parameters

Field Type mux Description
type string Object type: switch or mux
name string Name of new object
mode string Object mode: raw or layer2 for mux objects, omitted for switch objects
enable_vlan boolean Set to true if VLAN support is desired (optional)

Result

True if successful.

delete_object

Delete a switch or mux object.

Example (Python)
>>> fusion.delete_object(type="switch", name="my_switch")
True
Example (json-rpc)
// Request
{
    "method":"delete_object",
    "params": {
        "type":"switch",
        "name":"my_switch",
    },
    "id": 1
}

// Response
{
    "result": true,
    "id": 1
}

Parameters

Field Type mux Description
type string Object type: switch or mux
name string Name of object to be deleted

Result

True if successful.

add_object_port

Add a port to a switch or mux object.

For mux objects, the side field must be provided to specify whether the port is an upstream or downstream port. If VLAN is enabled and a VLAN is to be assigned to the port, the vlan_id field must be filled as well.

Example (Python)
>>> fusion.add_object_port(object={"type":"mux","name":"my_mux"}, port="B12", side="up", vlan_id=str(11))
True
Example (json-rpc)
// Request
{
    "method":"add_object_port",
    "params": {
        "object": {
            "type": "mux",
            "name": "my_mux"
        },
        "port": "B12",
        "side": "up",
        "vlan_id": "11"
    },
    "id": 1
}

// Response
{
    "result": true,
    "id": 1
}

Parameters

Field Type mux Description
type string Object type: switch or mux
name string Name of object/td>
port string Port to be added to the object
side string up for upstream ports or down for downstream ports (mux objects only)
vlan_id integer VLAN ID used by this port (optional)

Result

True if successful.

remove_object_port

Remove a port from a switch or mux object.

Example (Python)
>>> fusion.remove_object_port(object={"type":"mux":"name":"my_mux"}, port="B12")
True
Example (json-rpc)
// Request
{
    "method":"remove_object_port",
    "params": {
        "object": {
            "type": "mux",
            "name": "my_mux"
        },
        "port": "B12"
    },
    "id": 1
}

// Response
{
    "result": true,
    "id": 1
}

Parameters

Field Type mux Description
type string Object type: switch or mux
name string Name of object
port string Port to be removed from the object

Result

True if successful.

set_object_mode

Change the mode attribute of a mux object.

Example (Python)
>>> fusion.set_object_mode(object={"type":"mux","name":"my_mux"}, mode="raw")
True
Example (json-rpc)
// Request
{
    "method": "set_object_mode",
    "params": {
        "object": {
            "type": "mux",
            "name": "my_mux"
        },
        "mode": "raw"
    },
    "id": 1
}

// Response
{
    "result": true,
    "id": 1
}

Parameters

Field Type mux Description
type string Object type: mux
name string Name of object
mode string New mode of the mux object: raw or layer2

Result

True if successful.

set_object_vlan

Enable or disable VLAN support on a switch or mux object.

Example (Python)
>>> fusion.set_object_vlan(object={"type":"mux","name":"my_mux"}, enable_vlan=True)
True
Example (json-rpc)
// Request
{
    "method": "set_object_vlan",
    "params": {
        "object": {
            "type": "mux",
            "name": "my_mux"
        },
        "enable_vlan": true
    },
    "id": 1
}

// Response
{
    "result": true,
    "id": 1
}

Parameters

Field Type mux Description
type string Object type: switch or mux
name string Name of object
enable_vlan boolean Set to true to enable VLAN support, or false to disable

Result

True if successful.

set_object_unknown_unicast

Allow transmission of unknown unicast packets on a specified port

Example (Python)
fusion.set_object_unknown_unicast(object={"type":"switch", "name":"my_switch"}, port="B2", unknown_unicast=0)
>>> True
Example (json-rpc)
// Request
{
    "method":"set_object_unknown_unicast",
    "params": {
        "object": {
            "type": "switch",
            "name": "my_switch"
        },
        "port": "B1",
        "unknown_unicast": "0"
    },
    "id": 1
}
// Response
{
    "result": true,
    "id": 1
}

Parameters

Field Type mux Description
type string Object type: switch or mux
name string Name of object
port string Port to associate the behaviour to
unknown_unicast bool '0' to disallow unknown unicast, '1' to accept

Result

True if successful.

add_object_static_mac

Add a static MAC address to a single port on an object.

Example (Python)
>>> fusion.add_object_static_mac(object={"type":"switch", "name":"my_switch"}, port="B1", static_mac="643F5F011630")
True
Example (json-rpc)
// Request
{
    "method":"add_object_static_mac",
    "params": {
        "object": {
            "type": "switch",
            "name": "my_switch"
        },
        "port": "B1",
        "static_mac": "643F5F011630"
    },
    "id": 1
}

// Response
{
    "result": true,
    "id": 1
}

Parameters

Field Type mux Description
type string Object type: switch or mux
name string Name of object
port string Port to associate the static MAC address with
static_mac string 12 hex chars representing the MAC address to be assigned

Result

True if successful.

remove_object_static_mac

Remove a static MAC address from a single port on an object.

Example (Python)
>>> fusion.remove_object_static_mac(object={"type":"switch", "name":"my_switch"}, port="B1", static_mac="643F5F011630")
True
Example (json-rpc)
// Request
{
    "method":"remove_object_static_mac",
    "params": {
        "object": {
            "type": "switch",
            "name": "my_switch"
        },
        "port": "B1",
        "static_mac": "643F5F011630"
    },
    "id": 1
}

// Response
{
    "result": true,
    "id": 1
}

Parameters

Field Type mux Description
type string Object type: switch or mux
name string Name of object
port string Port to associate the static MAC address with
static_mac string MAC address to be removed

Result

True if successful

get_object_static_mac

Retrieve all static MAC addresses assigned to a specified object.

Example (Python)
>>> fusion.get_object_static_mac(object={"type":"switch","name":"my_switch"})
u'static_mac': {u'643F5F011630': [u'B1']}, u'object': {u'type': u'switch', u'name': u'my_switch'}
Example (json-rpc)
// Request
{
    "method": "get_object_static_mac",
    "params": {
        "type": "switch",
        "name": "my_switch"
    },
    "id": 1
}

// Response
{
    "result": {
        "static_mac": {
            "643F5F011630": [
                "B1"
            ]
        },
        "object": {
            "type": "switch",
            "name": "my_switch"
        }
    },
    "id": 1
}

Parameters

Field Type mux Description
type string Object type: switch or mux
name string Name of object

Result

This returns a list of all static MAC addresses currently assigned to the specified object.

add_object_igmp_static_group

Adds a static route of a multicast group to a port for a given mux/switch object

Example (Python)
>>> fusion.add_object_igmp_static_group(object={"type":"switch","name":"my_switch"}, port="A1", group="224.1.1.1")
True
Example (json-rpc)
// Request
{
    "method": "add_object_igmp_static_group",
    "params": {
        "object": {
            "type": "switch",
            "name": "my_switch"
        },
        "port": "A1",
        "group": "224.1.1.1"
    },
    "id": 1
}

// Response
{
    "result": true,
    "id": 1
}

Parameters

Field Type mux Description
type string Object type: switch or mux
name string Name of object
port string Port to associate the static route to
group string The IGMP group to add

Result

True if successful

remove_object_igmp_static_group

Removes a static route of a multicast group to a port for a given mux/switch object.

Example (Python)
>>> fusion.remove_object_igmp_static_group(object={"type":"switch","name":"my_switch"}, port="A1", group="224.1.1.1")
True
Example (json-rpc)
// Request
{
    "method": "remove_object_igmp_static_group",
    "params": {
        "object": {
            "type": "switch",
            "name": "my_switch"
        },
        "port": "A1",
        "group": "224.1.1.1"
    },
    "id": 1
}

// Response
{
    "result": true,
    "id": 1
}

Parameters

Field Type mux Description
type string Object type: switch or mux
name string Name of object
port string The port to remove a static route from
group string The IGMP group to remove

Result

True if successful.

get_object_mac_table

This method allows for retrieval of all MAC address table entries for a specific object.

Example (Python)
>>> fusion.get_object_mac_table(object={"type":"switch", "name":"my_switch"})
{u'mac_table': {u'643F5F011630': [{u'learned_routes': [u'B1'], u'port': u'B2', u'static_routes': []}, {u'learned_routes': [u'B1'], u'port': u'B3', u'static_routes': []}], u'102233445566': [{u'learned_routes': [], u'lock': True, u'port': u'B1', u'static_routes': [u'B1']}, {u'learned_routes': [], u'lock': True, u'port': u'B2', u'static_routes': [u'B1']}, {u'learned_routes': [], u'lock': True, u'port': u'B3', u'static_routes': [u'B1']}]}, u'object': {u'type': u'switch', u'name': u'my_switch'}}
Example (json-rpc)
// Request
{
    "method": "get_object_mac_table",
    "params": {
        "object": {
            "type": "switch",
            "name": "my_switch"
        }
    },
    "id": 1
}

// Response
{
    "mac_table": {
        "643F5F011630": [
            {
                "learned_routes": [
                    "B1"
                ],
                "port": "B2",
                "static_routes": []
            },
            {
                "learned_routes": [
                    "B1"
                ],
                "port": "B3",
                "static_routes": []
            }
        ],
        "102233445566": [
            {
                "learned_routes": [],
                "lock": true,
                "port": "B1",
                "static_routes": [
                    "B1"
                ]
            },
            {
                "learned_routes": [],
                "lock": true,
                "port": "B2",
                "static_routes": [
                    "B1"
                ]
            },
            {
                "learned_routes": [],
                "lock": true,
                "port": "B3",
                "static_routes": [
                    "B1"
                ]
            }
        ]
    },
    "object": {
        "type": "switch",
        "name": "my_switch"
    },
    "id": 1
}

Parameters

Field Type mux Description
type string Object type: switch or mux
name string Name of object

Result

Returns an array of the MAC address table of the requested object, noting static and dynamically learned routes

set_object_mac_learning

This method will allow for the enabling or disabling of MAC address learning on objects that support it. Note: MAC address learning is enabled by default for objects that support it.

Example (Python)
>>> fusion.set_object_mac_learning(object={"type":"switch","name":"my_switch"}, mac_address_learning="False")
True
Example (json-rpc)
// Request
{
    "method": "set_object_mac_learning",
    "params": {
        "object": {
            "type": "switch",
            "name": "my_switch"
        },
        "mac_address_learning": false
    },
    "id": 1
}

// Response
{
    "result": true,
    "id": 1
}

Parameters

Field Type mux Description
type string Object type: switch or mux
name string Name of object
mac_address learning boolean Set to enable or disable MAC address learning

Result

True if successful.

set_object_igmp

This method allows for setting of an object's IGMP snooping setting and associated features

Example (Python)
>>> fusion.set_object_igmp(object={"type":"switch","name":"my_switch"},snooping="enabled",flood_unknown="true",fast_leave="true",querier="192.168.10.37",version="2");
True
Example (json-rpc)
// Request
{
    "method": "set_object_igmp",
    "params": {
        "object": {
            "type": "switch",
            "name": "my_switch"
        },
        "snooping": "enabled",
        "flood_unknown": "true",
        "fast_leave": "true",
        "querier": "192.168.10.37",
        "version": "2"
    },
    "id": 1
}

// Response
{
    "result": true,
    "id": 1
}

Parameters

Field Type mux Description
type string Object type: switch or mux
name string Name of object
snooping string Enables IGMP Snooping for the object
flood_uknown string Determines if unknown multicast traffic is broadcast or dropped
fast_leave string If true, IGMP leave messages will result in immediate removal of the group, else wait for a timeout
querier string If specified, sets the Fusion as an IGMP querier with the specified source IP address
version string IGMP protocol version to use: 1, 2 or 3

Result

True if successful.

get_object_igmp

Read the current IGMP settings for an object

Example (Python)
>>> fusion.get_object_igmp(object={"type":"switch","name":"my_switch"})
{u'snooping': True, u'object': {u'type': u'switch', u'name': u'my_switch'}, u'version': 2, u'querier': u'192.168.10.37', u'fast_leave': True, u'flood_unknown': True}
Example (json-rpc)
// Request
{
    "method": "set_object_igmp",
    "params": {
        "object": {
            "type": "switch",
            "name": "my_switch"
        },
        "snooping": "enabled",
        "flood_unknown": "true",
        "fast_leave": "true",
        "querier": "192.168.10.37",
        "version": "2"
    },
    "id": 1
}

// Response
{
    "result": true,
    "id": 1
}

Parameters

Field Type mux Description
type string Object type: switch or mux
name string Name of object
snooping string Enables IGMP Snooping for the object
flood_uknown string Determines if unknown multicast traffic is broadcast or dropped
fast_leave string If true, IGMP leave messages will result in immediate removal of the group, else wait for a timeout
querier string If specified, sets the Fusion as an IGMP querier with the specified source IP address
version string IGMP protocol version to use: 1, 2 or 3

Result

True if successful.

get_object_igmp

Read the current IGMP settings for an object

Example (Python)
>>> fusion.get_object_igmp(object={"type":"switch","name":"my_switch"})
{u'snooping': True, u'object': {u'type': u'switch', u'name': u'my_switch'}, u'version': 2, u'querier': u'192.168.10.37', u'fast_leave': True, u'flood_unknown': True}
Example (json-rpc)
// Request
{
    "method": "get_object_igmp",
    "params": {
        "object": {
            "type": "switch",
            "name": "my_switch"
        }
    },
    "id": 1
}

// Response
{
    "result": {
        "snooping": true,
        "object": {
            "type": "switch",
            "name": "my_switch"
        },
        "version": 2,
        "querier": "192.168.10.37",
        "fast_leave": true,
        "flood_unknown": true
    },
    "id": 1
}

Parameters

Field Type mux Description
type string Object type: switch or mux
name string Name of object

Result

Field Type mux Description
snooping string Enables IGMP Snooping for the object
type string Object type: switch or mux
name string Name of object
version number The version number of the IGMP protocol in use
querier string The source the IP address the querier's messages will be given
fast_leave string If true, IGMP leave messages will result in immediate removal of the group, else wait for a timeout

add_object_block

Adds an output port to the blocked routes of a port in a switch object.

Example (Python)
>>> fusion.add_object_block(object={"type":"switch","name":"my_switch"}, port="A1", dst_port="A2")
True
Example (json-rpc)
// Request
{
    "method": "add_object_block",
    "params": {
        "object": {
            "type": "switch",
            "name": "my_switch"
        },
        "port": "A1",
        "dst_port": "A2"
    },
    "id": 1
}

// Response
{
    "result": true,
    "id": 1
}

Parameters

Field Type mux Description
type string Object type: switch only
name string Object name
port string Input port to block traffic from
dst_port string Output port to block traffic to

Result

True if successful.

remove_object_block

Removes an output port from the blocked routes of a port in a switch object.

Example (Python)
>>> fusion.remove_object_block(object={"type":"switch","name":"my_switch"}, port="A1", dst_port="A2")
True
Example (json-rpc)
// Request
{
    "method": "remove_object_block",
    "params": {
        "object": {
            "type": "switch",
            "name": "my_switch"
        },
        "port": "A1",
        "dst_port": "A2"
    },
    "id": 1
}

// Response
{
    "result": true,
    "id": 1
}

Parameters

Field Type mux Description
type string Object type: switch
name string Object name
port string Input port to block traffic from
dst_port string Output port to block traffic to

Result

True if successful.

Mirrors

get_mirror

This method gets the current status and structure of a mirror.

Example (Python)
>>> fusion.get_mirror("my_mirror")
[{u'timestamp_mode': u'fcs', u'output': [u'A1'], u'objects': {u'switch': [u'my_switch']}, u'name': u'my_mirror', u'ports': [u'B10']}]
Example (json-rpc)
// Request
{
    "method": "get_mirror",
    "params": "my_mirror",
    "id": 1
}

// Response
{
    "timestamp_mode": "fcs",
    "output": [
        "A1"
    ],
    "objects": {
        "switch": [
            "my_switch"
        ]
    },
    "name": "my_mirror",
    "ports": [
        "B10"
    ],
    "id": 1
}

Parameters

Field Type mux Description
name string Name of the mirror

Result

Field Type mux Description
name string Name of the mirror
nameoutput string The port the mirror will output its traffic to
ports string The ports that have their traffic mirrored to the output
objects string The objects that are having their traffic mirrored to the output
timestamp_mode string Reports the timestamping mode (i.e. format) in use with a particular mirror

create_mirror

This method creates a mirror object on the Fusion with the specified name.

Example (Python)
>>> fusion.create_mirror(name="my_mirror")
True
Example (json-rpc)
// Request
{
    "method": "create_mirror",
    "params": {
        "name": "my_mirror"
    },
    "id": 1
}

// Response
{
    "result": true,
    "id": 1
}

Parameters

Field Type mux Description
name string Name of the mirror

Result

True if successful.

delete_mirror

This method removes a mirror object on the Fusion with the specified name.

Example (Python)
>>> fusion.delete_mirror(name="my_mirror")
True
Example (json-rpc)
// Request
{
    "method": "delete_mirror",
    "params": {
        "name": "my_mirror"
    },
    "id": 1
}

// Response
{
    "result": true,
    "id": 1
}

Parameters

Field Type mux Description
name string Name of the mirror

Result

True if successful.

set_mirror_timestamp_mode

This method enables or disables the timestamping mode of a mirror object.

Example (Python)
>>> fusion.set_mirror_timestamp_mode(mirror="my_mirror", mode="fcs")
True
Example (json-rpc)
// Request
{
    "method": "set_mirror_timestamp_mode",
    "params": {
        "mirror": "my_mirror",
        "mode": "fcs"
    },
    "id": 1
}

// Response
{
    "result": true,
    "id": 1
}

Parameters

Field Type mux Description
name string Name of the mirror to modify
mode string Timestamping mode to use: fcs or fcs-compat or none

Result

True if successful.

add_mirror_output

Use this method to specify the output port for all of the mirror’s traffic

Example (Python)
    >>> fusion.add_mirror_output(mirror="my_mirror", port="B8")
    True

##### Example (json-rpc)

// Request
{
    "method": "add_mirror_output",
    "params": {
        "mirror": "my_mirror",
        "port": "B8"
    },
    "id": 1
}

// Response
{
    "result": true,
    "id": 1
}

Parameters

Field Type mux Description
mirror string Name of the mirror
port string Name of the port to add as output

Result

True if successful.

remove_mirror_output

Removes the output port from a specified mirror object.

Example (Python)
>>> fusion.remove_mirror_output(mirror="my_mirror", port="B8")
True
Example (json-rpc)
// Request
{
    "method": "remove_mirror_output",
    "params": {
        "mirror": "my_mirror",
        "port": "B8"
    },
    "id": 1
}

// Response
{
    "result": true,
    "id": 1
}

Parameters

Field Type mux Description
mirror string Name of the mirror
port string Name of the port to remove as output

Result

True if successful.

add_mirror_port

This method is used to add a singular port to a mirror object.

Example (Python)
>>> fusion.add_mirror_port(mirror="my_mirror", port="C1")
True
Example (json-rpc)
// Request
{
    "method": "add_mirror_port",
    "params": {
        "mirror":"my_mirror",
        "port":"C1"
    },
    "id": 1
}

// Response
{
    "result": true,
    "id": 1
}

Parameters

Field Type mux Description
mirror string Name of the mirror
port string Name of the port whose traffic is to be mirrored

Result

True if successful.

remove_mirror_port

This method is used to remove specific ports from a mirror object.

Example (Python)
>>> fusion.remove_mirror_port(mirror="my_mirror", port="C1")
True
Example (json-rpc)
// Request
{
    "method": "remove_mirror_port",
    "params": {
        "mirror":"my_mirror",
        "port":"C1"
    },
    "id": 1
}

// Response
{
    "result": true,
    "id": 1
}

Parameters

Field Type mux Description
mirror string Name of the mirror
port string Name of the port to remove from mirroring

Result

True if successful.

add_mirror_object

This method is used to add a whole object to a mirror object.

Example (Python)
>>> fusion.add_mirror_object(mirror="my_mirror", type="switch", object="my_switch")
True
Example (json-rpc)
// Request
{
    "method": "add_mirror_object",
    "params": {
        "mirror": "my_mirror",
        "type": "switch",
        "object": "my_switch"
    },
    "id": 1
}

// Response
{
    "result": true,
    "id": 1
}

Parameters

Field Type mux Description
mirror string Name of the mirror to add the object to
type string The type of the object to add: switch or mux
object string Name of the object to add

Result

True if successful.

remove_mirror_object

This method is used to remove objects currently assigned to a mirror.

Example (Python)
>>> fusion.remove_mirror_object(mirror="foo", type="my_mirror", object="my_switch")
True
Example (json-rpc)
// Request
{
    "method": "remove_mirror_object",
    "params": {
        "mirror": "my_mirror",
        "type": "switch",
        "object": "my_switch"
    },
    "id": 1
}

// Response
{
    "result": true,
    "id": 1
}

Parameters

Field Type mux Description
mirror string Name of the mirror to remove the object from
type string The Type of the object to add: switch or mux
object string Name of the object to remove

Result

True if successful.

Internal Module Configuration

power_on_module

This method is used to turn on a specific internal module. Note: this does not apply to FPGA internal modules.

Example (Python)
>>> fusion.power_on_module(module="Y")
True
Example (json-rpc)
// Request
{
    "method": "power_on_module",
    "params": {"module": "X"},
    "id": 1
}

// Response
{
    "result": true,
    "id": 1
}

Parameters

Field Type Description
module string Name of the module to power on ("X" or "Y")

Result

True if successful.

power_off_module

This method is used to turn off a specific internal module. Note: this does not apply to FPGA internal modules.

Example (Python)
>>> fusion.power_off_module(module="Y")
True
Example (json-rpc)
// Request
{
    "method": "power_off_module",
    "params": {
        "module": "X"
    },
    "id": 1
}

// Response
{
    "result": true,
    "id": 1
}

Parameters

Field Type Description
module string Name of the module to power off ("X" or "Y")

Result

True if successful.

set_module_xvc_server

This method is used to enable or disable the XVC server of an FPGA module.

Example (Python)
>>> fusion.set_module_xvc_server(module="X", enable=True, port=80)
True
Example (json-rpc)
// Request
{
    "method": "set_module_xvc_server",
    "params": {
        "enable": true,
        "port": 6767,
        "module": "X"
    },
    "id": 1
}

// Response
{
    "result": true,
    "id": 1
}

Parameters

Field Type Description
module string Name of the module to enable the XVC server on
enable boolean Set to 1 to enable to serial console connection for the module, 0 to disable
port int Port number to be assigned to the XVC connection

Result

True if successful.

set_module_serial_server

This method is used to enable or disable the serial server of an internal module.

Example (Python)
>>> fusion.set_module_serial_server(enable=True, port=6768, module="X")
True
Example (json-rpc)
// Request
{
    "method": "set_module_serial_server",
    "params": {
        "enable": true,
        "port": 6768,
        "module": "X"
    },
    "id": 1
}

// Response
{
    "result": true,
    "id": 1
}

Parameters

Field Type Description
module string Name of the module to enable the serial console on
enable boolean Set to 1 to enable to serial console connection for the module, 0 to disable
name string Name of the mirror

Result

True if successful.

set_module_serial_console

This method is used to enable or disable the serial console interface for an internal module.

Example (Python)
>>> fusion.set_module_serial_console(module="X", enable=True)
True
Example (json-rpc)
// Request
{
    "method": "set_module_serial_console",
    "params": {
        "enable": true,
        "port": 6769,
        "module": "X"
    },
    "id": 1
}

// Response
{
    "result": true,
    "id": 1
}

Parameters

Field Type Description
module string Name of the module to enable the serial console on
enable boolean Set to 1 to enable to serial console connection for the module, 0 to disable

Result

True if successful.

get_modules

This method shows information about the Internal Modules installed in the ExaLINK Fusion

Example (Python)
>>> fusion.get_modules()
[{u'function': u'switch', u'state': u'running', u'name': u'X'}]
Example (json-rpc)
// Request
{
    "method": "get_modules",
    "id": 1
}

// Response
{
    "result": [
        {
        "function": "switch",
        "state": "running",
        "name": "X"
        }
    ],
    "id": 1
}

Parameters

None

Result

Field Type Description
function string The function of the internal module: switch, mux, or custom
state string The current state of the internal module: running, stopped, or initializing
name string The position of the internal module: X or Y

set_module_function

This method sets the firmware that should be used on a FPGA Internal Module

Example (Python)
>>> fusion.set_module_function(module="X", function="switch")
True
>>> fusion.set_module_function(module="Y", function="custom")
True
Example (json-rpc)
// Request
{
    "method": "set_module_function",
    "params": {
    "module": "X",
        "function": "switch"
    },
    "id": 1
}

// Response
{
    "result": true,
    "id": 1
}

Parameters

Field Type Description
module string Select which module the function is being set: X or Y
function string The firmware type the internal module should run: switch, mux or custom

Result

True if successful.

set_module_fpga_bitstream

This method sets the bitfile that should be loaded on an FPGA module configured to run custom firmware

Example (Python)
>>> fusion.set_module_fpga_bitstream(module="Y", bitstream="mybitfile.bit")
True
Example (json-rpc)
// Request
{

    "method": "set_module_fpga_bitstream",
    "params": {
        "module": "Y",
        "bitstream": "mytbitfile.bit"
    },
    "id": 1
}

// Response
{
    "result": true,
    "id": 1
}

Parameters

Field Type Description
module string Select which internal module the bitstream should be loaded to
bitstream string The filename of the bitfile

Result

True if successful.