pybvc.controller package¶
Submodules¶
pybvc.controller.controller module¶
@authors: Sergei Garbuzov @status: Development @version: 1.1.0
controller.py: Controller’s properties and communication methods
-
class
pybvc.controller.controller.
Controller
(ipAddr, portNum, adminName, adminPassword, timeout=5)¶ Class that represents a Controller device.
-
add_netconf_node
(node)¶ - Connect a netconf device to the controller
- (for example connect vrouter to controller via NETCONF)
Parameters: node – pybvc.controller.netconfnode.NetconfNode
Returns: Status, JSON response from controller. Return type: pybvc.common.status.OperStatus
, JSON providing response from adding netconf noed.- STATUS.CONN_ERROR: If the controller did not respond.
. Provider info is empty. - STATUS.CTRL_INTERNAL_ERROR: If the controller responded but did not . provide any status. Provider info is . empty. - STATUS.OK: Success. Provider info is valid. - STATUS.HTTP_ERROR: If the controller responded with an error . status code.
-
brief_json
()¶ Returns JSON representation of this object (brief info).
-
build_inventory_object
(operational=True)¶
-
build_netconf_config_object
(netconf_id)¶
-
build_netconf_config_objects
()¶
-
build_netconf_node_inventory_object
(node_id, operational=True)¶
-
build_openflow_node_inventory_object
(node_id, operational=True)¶
-
build_topology_object
(topo_name)¶
-
check_node_config_status
(nodeId)¶ Return the configuration status of the node:
Parameters: nodeId (string) – Identifier for the node for which to get the config status Returns: Configuration status of the node. Return type: None or pybvc.common.status.OperStatus
STATUS.CONN_ERROR: If the controller did not respond.
- STATUS.CTRL_INTERNAL_ERROR: If the controller responded
but did not provide any status.
STATUS.NODE_CONFIGURED: If the node is configured.
STATUS.DATA_NOT_FOUND: If node is not configured.
-
check_node_conn_status
(nodeId)¶ Return the connection status of the node to the controller:
Parameters: nodeId (string) – Identifier for the node for which to get the config status Returns: Status of the node’s connection to the controller. Return type: None or pybvc.common.status.OperStatus
STATUS.CONN_ERROR: If the controller did not respond.
- STATUS.CTRL_INTERNAL_ERROR: If the controller responded
but did not provide any status.
STATUS.NODE_CONNECTED: If the node is connected
STATUS.NODE_DISCONNECTED: If the node is not connected
STATUS.DATA_NOT_FOUND: If node is not configured.
- STATUS.HTTP_ERROR: If the controller responded with
an error status code.
-
create_data_change_event_subscription
(datastore, scope, path)¶
-
delete_netconf_node
(netconfdev=None, nodename=None)¶ Disconnect a netconf device from the controller :param netconfdev:
Returns: Status, None. Return type: pybvc.common.status.OperStatus
, JSON providing response from adding netconf noed.STATUS.CONN_ERROR: If the controller did not respond.
- STATUS.CTRL_INTERNAL_ERROR: If the controller responded but did not
provide any status.
STATUS.OK: Success.
- STATUS.HTTP_ERROR: If the controller responded with an error
status code.
-
get_all_nodes_conn_status
()¶ - Return a list of nodes and the status of their connection
- to the controller.
Returns: Status, list of nodes the status of their connection to the controller Return type: pybvc.common.status.OperStatus
, list of dict [{node:<node id>, connected:<boolean>},...]STATUS.CONN_ERROR: If the controller did not respond. List is empty.
- STATUS.CTRL_INTERNAL_ERROR: If the controller responded but did not
provide any status. List is empty.
STATUS.OK: Success. List is valid.
STATUS.DATA_NOT_FOUND: Success. List is empty.
- STATUS.HTTP_ERROR: If the controller responded with an error
status code.
-
get_all_nodes_in_config
()¶ Return a list of nodes in the controller’s configuration data store
Returns: Status, list of nodes in the config data store of the controller Return type: pybvc.common.status.OperStatus
, listSTATUS.CONN_ERROR: If the controller did not respond. List is empty.
- STATUS.CTRL_INTERNAL_ERROR: If the controller responded but did not
provide any status. List is empty.
STATUS.OK: Success. List is valid.
STATUS.DATA_NOT_FOUND: Success. List is empty.
- STATUS.HTTP_ERROR: If the controller responded with an error
status code.
-
get_config_modules
()¶ Return a list of configuration modules.
Returns: Status, configuration modules. Return type: pybvc.common.status.OperStatus
, JSON listing modules and their operational stateSTATUS.CONN_ERROR: If the controller did not respond.
- STATUS.CTRL_INTERNAL_ERROR: If the controller responded but did
not provide any status.
STATUS.OK: Success.
STATUS.DATA_NOT_FOUND: Data missing or in unexpected format.
- STATUS.HTTP_ERROR: If the controller responded with an error
status code.
-
get_ext_mount_config_url
(node)¶
-
get_ext_mount_operational_url
(node)¶
-
get_inventory_nodes_yang_schema_path
()¶
-
get_module_operational_state
(moduleType, moduleName)¶ Return operational state for specified module.
Parameters: - moduleType (string) – module type
- moduleName (string) – module name
Returns: Status, operational state for specified module.
Return type: pybvc.common.status.OperStatus
, JSON providing operational stateSTATUS.CONN_ERROR: If the controller did not respond.
- STATUS.CTRL_INTERNAL_ERROR: If the controller responded but did
not provide any status. State info is empty.
STATUS.OK: Success. State info is valid.
STATUS.DATA_NOT_FOUND: Data missing or in unexpected format.
- STATUS.HTTP_ERROR: If the controller responded with an error
status code.
-
get_netconf_nodes_conn_status
()¶ - Return a list of NETCONF nodes and the status of their connection
- to the controller.
Returns: Status, list of nodes the status of their connection to the controller Return type: pybvc.common.status.OperStatus
, list of dict [{node:<node id>, connected:<boolean>},...]STATUS.CONN_ERROR: If the controller did not respond. List is empty.
- STATUS.CTRL_INTERNAL_ERROR: If the controller responded but did not
provide any status. List is empty.
STATUS.OK: Success. List is valid.
STATUS.DATA_NOT_FOUND: Success. List is empty.
- STATUS.HTTP_ERROR: If the controller responded with an error
status code.
-
get_netconf_nodes_in_config
()¶ - Return a list of NETCONF nodes in the controller’s configuration
- data store
Returns: Status, list of nodes in the config data store of the controller Return type: pybvc.common.status.OperStatus
, listSTATUS.CONN_ERROR: If the controller did not respond. List is empty.
- STATUS.CTRL_INTERNAL_ERROR: If the controller responded but did not
provide any status. List is empty.
STATUS.OK: Success. List is valid.
STATUS.DATA_NOT_FOUND: Success. List is empty.
- STATUS.HTTP_ERROR: If the controller responded with an error
status code.
-
get_netconf_operations
(nodeName)¶ Return a list of operations supported by the indicated node.
Parameters: nodeName (string) – Name of the node Returns: A tuple: Status, operations supported by indicated node. Return type: pybvc.common.status.OperStatus
, JSON listing the operations- STATUS.CONN_ERROR: If the controller did not respond.
Operations info is empty.
- STATUS.CTRL_INTERNAL_ERROR: If the controller responded but did
not provide any status. Operations info is empty.
STATUS.OK: Success. Operations info is valid.
STATUS.DATA_NOT_FOUND: Data missing or in unexpected format.
- STATUS.HTTP_ERROR: If the controller responded with an error
status code.
-
get_network_topology_yang_schema_path
(topo_id=None)¶
-
get_node_config_url
(node)¶
-
get_node_info
(nodeId)¶
-
get_node_operational_url
(node)¶
-
get_nodes_operational_list
()¶
-
get_openflow_nodes_operational_list
()¶
-
get_openflow_operational_flows_total_cnt
()¶
-
get_schema
(nodeName, schemaId, schemaVersion)¶ Return a YANG schema for the indicated schema on the indicated node.
Parameters: - nodeName (string) – Name of the node
- schemaId (string) – Id of the schema
- schemaVersion (string) – Version of the schema
Returns: Status, YANG schema.
Return type: pybvc.common.status.OperStatus
, YANG schemaSTATUS.CONN_ERROR: If the controller did not respond. schema is empty.
- STATUS.CTRL_INTERNAL_ERROR: If the controller responded but did not
provide any status. schema is empty.
STATUS.OK: Success. Result is valid.
STATUS.DATA_NOT_FOUND: Data missing or in unexpected format.
- STATUS.HTTP_ERROR: If the controller responded with an error
status code.
-
get_schemas
(nodeName)¶ Return a list of YANG model schemas for the node.
Parameters: nodeName (string) – Name of the node Returns: Status, list of YANG schemas for the node. Return type: pybvc.common.status.OperStatus
, JSON listing information about the YANG schemas for the nodeSTATUS.CONN_ERROR: If the controller did not respond. List is empty.
- STATUS.CTRL_INTERNAL_ERROR: If the controller responded but did not
provide any status. List is empty.
STATUS.OK: Success. List is valid.
- STATUS.HTTP_ERROR: If the controller responded with an error
status code.
-
get_service_provider_info
(name)¶ Return info about a single service provider.
Parameters: name (string) – Name of the provider Returns: Status, info about the service provider Return type: pybvc.common.status.OperStatus
, JSON providing info about the service provider- STATUS.CONN_ERROR: If the controller did not respond.
. Provider info is empty. - STATUS.CTRL_INTERNAL_ERROR: If the controller responded but did not . provide any status. provider info is . empty. - STATUS.OK: Success. Provider info is valid. - STATUS.DATA_NOT_FOUND: Data missing or in unexpected format. - STATUS.HTTP_ERROR: If the controller responded with an error . status code.
-
get_service_providers_info
()¶ Return a list of service providers available.
Returns: Status, list of service providers Return type: pybvc.common.status.OperStatus
, JSON providing list of service providers- STATUS.CONN_ERROR: If the controller did not respond.
. Provider info is empty. - STATUS.CTRL_INTERNAL_ERROR: If the controller responded but did not . provide any status. provider info is . empty. - STATUS.OK: Success. Provider info is valid. - STATUS.DATA_NOT_FOUND: Data missing or in unexpected format. - STATUS.HTTP_ERROR: If the controller responded with an error . status code.
-
get_sessions_info
(nodeName)¶ Return sessions for indicated node.
Parameters: nodeName (string) – Name of the node Returns: Status, list of sessions for indicated node Return type: pybvc.common.status.OperStatus
, JSON providing sessions- STATUS.CONN_ERROR: If the controller did not respond.
. Session info is empty. - STATUS.CTRL_INTERNAL_ERROR: If the controller responded but did not . provide any status. Session info is . empty. - STATUS.OK: Success. Session info is valid. - STATUS.DATA_NOT_FOUND: Data missing or in unexpected format. - STATUS.HTTP_ERROR: If the controller responded with an error . status code.
-
get_streams_info
()¶ Return streams available for subscription.
Returns: Status, list of streams Return type: pybvc.common.status.OperStatus
, JSON providing list of streams- STATUS.CONN_ERROR: If the controller did not respond.
Stream info is empty.
- STATUS.CTRL_INTERNAL_ERROR: If the controller responded but did not
provide any status. stream info is empty.
STATUS.OK: Success. Stream info is valid.
STATUS.DATA_NOT_FOUND: Data missing or in unexpected format.
- STATUS.HTTP_ERROR: If the controller responded with an error
status code.
-
get_topology_ids
()¶
-
http_delete_request
(url, data, headers)¶ - Sends HTTP DELETE request to a remote server
- and returns the response.
Parameters: - url (string) – The complete url including protocol: http://www.example.com/path/to/resource
- data (string) – The data to include in the body of the request. Typically set to None.
- headers (dict) – The headers to include in the request.
Returns: The response from the http request.
Return type: None or requests.response <http://docs.python-requests.org/en/latest/api/#requests.Response>
-
http_get_request
(url, data, headers, timeout=None)¶ - Sends HTTP GET request to a remote server
- and returns the response.
Parameters: - url (string) – The complete url including protocol: http://www.example.com/path/to/resource
- data (string) – The data to include in the body of the request. Typically set to None.
- headers (dict) – The headers to include in the request.
- timeout (string) – Pass a timeout for longlived queries
Returns: The response from the http request.
Return type: None or requests.response <http://docs.python-requests.org/en/latest/api/#requests.Response>
-
http_post_request
(url, data, headers)¶ - Sends HTTP POST request to a remote server
- and returns the response.
Parameters: - url (string) – The complete url including protocol: http://www.example.com/path/to/resource
- data (string) – The data to include in the body of the request. Typically set to None.
- headers (dict) – The headers to include in the request.
Returns: The response from the http request.
Return type: None or requests.response <http://docs.python-requests.org/en/latest/api/#requests.Response>
-
http_put_request
(url, data, headers)¶ - Sends HTTP PUT request to a remote server
- and returns the response.
Parameters: - url (string) – The complete url including protocol: http://www.example.com/path/to/resource
- data (string) – The data to include in the body of the request. Typically set to None.
- headers (dict) – The headers to include in the request.
Returns: The response from the http request.
Return type: None or requests.response <http://docs.python-requests.org/en/latest/api/#requests.Response>
-
modify_netconf_node_in_config
(netconfdev)¶ Modify connected netconf device’s info in the controller
Parameters: netconfdev – pybvc.controller.netconfnode.NetconfNode
Returns: Status, None. Return type: pybvc.common.status.OperStatus
, JSON providing response from adding netconf noed.STATUS.CONN_ERROR: If the controller did not respond.
- STATUS.CTRL_INTERNAL_ERROR: If the controller responded but did not
provide any status.
STATUS.OK: Success.
- STATUS.HTTP_ERROR: If the controller responded with an error
status code.
-
subscribe_to_stream
(stream_name)¶
-
to_json
()¶ Returns JSON representation of this object.
-
to_string
()¶ Returns string representation of this object.
-
pybvc.controller.inventory module¶
@authors: Sergei Garbuzov @status: Development @version: 1.1.0
inventory.py: Controller’s inventory parser
-
class
pybvc.controller.inventory.
Inventory
(inv_json=None)¶ Class that represents current state of the Controller’s inventory store.
-
add_netconf_node
(node)¶
-
add_openflow_node
(node)¶
-
get_netconf_node
(node_id)¶
-
get_netconf_node_ids
()¶
-
get_openflow_node
(node_id)¶
-
get_openflow_node_flows_cnt
(node_id)¶
-
get_openflow_node_ids
()¶
-
-
class
pybvc.controller.inventory.
NetconfCapableNode
(clazz, inv_json=None, inv_dict=None)¶ Class that represents current state of a NETCONF capable node. Helper class of the ‘Inventory’ class.
-
get_conn_status
()¶
-
get_current_capabilities
()¶
-
get_id
()¶
-
get_initial_capabilities
()¶
-
is_connected
()¶
-
to_json
()¶ Returns JSON representation of this object.
-
to_string
()¶ Returns string representation of this object.
-
-
class
pybvc.controller.inventory.
NetconfConfigModule
(d)¶ Class that represents NETCONF node configuration module on the Controller
-
get_admin_name
()¶
-
get_admin_pswd
()¶
-
get_conn_timeout
()¶
-
get_ip_address
()¶
-
get_max_conn_attempts
()¶
-
get_name
()¶
-
get_retry_conn_timeout
()¶
-
get_tcp_port
()¶
-
to_json
()¶ Returns JSON representation of this object.
-
to_string
()¶ Returns string representation of this object.
-
-
class
pybvc.controller.inventory.
OpenFlowCapableNode
(inv_json=None, inv_dict=None)¶ Class that represents current state of an OpenFlow capable node in the Controller’s inventory store. Helper class of the ‘Inventory’ class.
-
get_capabilities
()¶
-
get_description
()¶
-
get_flow_tables_cnt
()¶
-
get_flows_cnt
()¶
-
get_flows_in_table_cnt
(table_id)¶
-
get_group_features
()¶
-
get_group_ids
()¶
-
get_groups_total_num
()¶
-
get_hardware_info
()¶
-
get_id
()¶
-
get_ip_address
()¶
-
get_manufacturer_info
()¶
-
get_max_buffers_info
()¶
-
get_max_tables_info
()¶
-
get_meter_features
()¶
-
get_port_id
(port_num)¶
-
get_port_ids
()¶
-
get_port_name
(port_id)¶
-
get_port_number
(port_id)¶
-
get_port_obj
(port_id)¶
-
get_serial_number
()¶
-
get_software_info
()¶
-
to_json
()¶ Returns JSON representation of this object.
-
to_string
()¶ Returns string representation of this object.
-
-
class
pybvc.controller.inventory.
OpenFlowPort
(d)¶ Class that represents current state of an OpenFlow enabled port. Helper class of the ‘OpenFlowCapableNode’ class.
-
get_bytes_received
()¶
-
get_bytes_transmitted
()¶
-
get_current_features
()¶
-
get_current_speed
()¶
-
get_forwarding_state
()¶
-
get_link_state
()¶
-
get_mac_address
()¶
-
get_packets_received
()¶
-
get_packets_transmitted
()¶
-
get_port_id
()¶
-
get_port_name
()¶
-
get_port_number
()¶
-
to_json
()¶ Returns JSON representation of this object.
-
to_string
()¶ Returns string representation of this object.
-
pybvc.controller.netconfnode module¶
@authors: Sergei Garbuzov @status: Development @version: 1.1.0
netconfnode.py: Controller’s NETCONF node specific properties
-
class
pybvc.controller.netconfnode.
NetconfNode
(controller=None, nodeName=None, ipAddr=None, portNum=None, adminName=None, adminPassword=None, tcpOnly=False)¶ Bases:
object
Class that represents a NETCONF capable server device.
Parameters: - controller –
pybvc.controller.controller.Controller
- nodeName (string) – The name of the node
- ipAddr (string) – The ip address for the netconf device
- portNum (int) – The port number to communicate NETCONF to the device
- adminName (string) – The username to authenticate setup of the NETCONF communication
- adminPassword (string) – The password to authenticate setup of the NETCONF communication
- tcpOnly (boolean) – Use TCP only or not.
Returns: The newly created NetconfNode instance.
Return type: -
to_json
()¶ Returns JSON representation of this object.
-
to_string
()¶ Returns string representation of this object.
- controller –
pybvc.controller.notification module¶
@authors: Sergei Garbuzov @status: Development @version: 1.1.0
notification.py: Parser for notification events received from Controller
-
class
pybvc.controller.notification.
InventoryChangeEvent
(event)¶ Parser for the data change event located in the inventory change notification message received from the Controller. Helper subclass for the ‘InventoryChangeNotification’ class.
-
created
()¶
-
deleted
()¶
-
do_print
()¶
-
get_flow_entry_id
()¶
-
get_node_id
()¶
-
get_path
()¶
-
is_flow_entry
()¶
-
is_node
()¶
-
is_switch
()¶
-
updated
()¶
-
-
class
pybvc.controller.notification.
InventoryChangeNotification
(event)¶ Parser for notification messages generated by the Controller when it detects changes in its internal inventory data store.
-
flows_added
()¶
-
flows_removed
()¶
-
get_time
()¶
-
nodes_added
()¶
-
nodes_removed
()¶
-
print_events
()¶
-
-
class
pybvc.controller.notification.
NetworkTopologyChangeNotification
(event)¶ Parser for notification messages generated by the Controller when it detects changes in the network topology data tree.
-
get_time
()¶
-
hosts_added
()¶
-
hosts_removed
()¶
-
links_added
()¶
-
links_removed
()¶
-
print_events
()¶
-
switches_added
()¶
-
switches_removed
()¶
-
-
class
pybvc.controller.notification.
PathInfo
(info)¶ Represents the path to the node in the Controller’s internal data tree where the change has been detected. Helper subclass for the ‘NetworkTopologyChangeNotification’ and ‘InventoryChangeNotification’ classes.
-
do_print
()¶
-
-
class
pybvc.controller.notification.
TopoChangeEvent
(event)¶ Parser for the data change event located in the network topology change notification message received from the Controller. Helper subclass for the ‘NetworkTopologyChangeNotification’ class.
-
created
()¶
-
deleted
()¶
-
do_print
()¶
-
get_link_id
()¶
-
get_node_id
()¶
-
get_path
()¶
-
is_host
()¶
-
is_link
()¶
-
is_node
()¶
-
is_switch
()¶
-
updated
()¶
-
-
pybvc.controller.notification.
yang_nsname_to_prefix
(nsname)¶
-
pybvc.controller.notification.
yang_prefix_to_nsname
(prefix)¶
pybvc.controller.openflownode module¶
@authors: Sergei Garbuzov @status: Development @version: 1.1.0
openflownode.py: Controller’s OpenFlow node specific properties
pybvc.controller.topology module¶
@authors: Sergei Garbuzov @status: Development @version: 1.1.0
topology.py: Controller’s topology parser
-
class
pybvc.controller.topology.
Link
(d)¶ A link in the topology instance. Helper class of the ‘Topology’ class
-
get_id
()¶
-
get_src_node_id
()¶
-
is_dst_node
(node)¶
-
is_dst_node_port
(node, pnum)¶
-
is_host_to_switch
()¶
-
is_loopback
()¶
-
is_switch_to_host
()¶
-
is_switch_to_switch
()¶
-
to_string
()¶ Returns string representation of this object.
-
-
class
pybvc.controller.topology.
Node
(d)¶ A node in the topology instance. Helper class of the ‘Topology’ class
-
get_id
()¶
-
get_ip_address_for_mac
(mac_addr)¶
-
get_mac_address
()¶
-
get_openflow_id
()¶
-
get_port_numbers
()¶
-
get_type_str
()¶
-
is_host
()¶
-
is_switch
()¶
-
to_json
()¶ Returns JSON representation of this object.
-
to_string
()¶ Returns string representation of this object.
-
-
class
pybvc.controller.topology.
Topology
(topo_json=None, topo_dict=None)¶ Class that represents Controller’s view on a Network Topology instance.
-
add_link
(link)¶
-
add_node
(node)¶
-
get_host_ids
()¶
-
get_hosts
()¶
-
get_hosts_cnt
()¶
-
get_id
()¶
-
get_inter_switch_links_cnt
()¶
-
get_node_by_id
(node_id)¶
-
get_nodes
()¶
-
get_peer_list_for_node
(node)¶
-
get_peer_list_for_node_port_
(node, pnum)¶
-
get_switch
(switch_id)¶
-
get_switch_ids
()¶
-
get_switches
()¶
-
get_switches_cnt
()¶
-
to_string
()¶ Returns string representation of this object.
-