Skip to main content

Python bindings for libubus

Project description

Code in this directory enables a subset of libubus functions to be used directly from python.

Installation

To install these bidning you need to have the following libraries and headers installed:

  • libubox

  • libubus

  • python/python3

Examples

connect and disconnect

To connect you need to:

import ubus
ubus.connect("/var/run/ubus.sock")

To disconnect you can simply:

ubus.disconnect()

Note that calling connect()/disconnect() on opened/closed connection will throw an exception.

add

To add an object to ubus you can (you need to become root first):

def callback(handler, data):
    handler.reply(data)  # this should return exactly the same data to the caller

ubus.add(
    "my_object", {
        "my_method": {"method": callback, "signature": {
                "first": ubus.BLOBMSG_TYPE_STRING,
                "second": ubus.BLOBMSG_TYPE_BOOL,
                "third": ubus.BLOBMSG_TYPE_INT32,
        }},
     },
)

You need to enter the loop to serve the object methods afterwards:

ubus.loop()

Note that it might not be a good idea to call the callback function recursively.

objects

To list the objects which are currently connected to ubus you can call:

ubus.objects()

->

{u'my_object': {u'my_method': {u'first': 3, u'second': 7, u'third': 5}}}

call

To call an actual method on an object you can use:

ubus.call("my_object", "my_method", {"first": "my_string", "second": True, "third": 42})

->

[{"first": "my_string", "second": True, "third": 42}]

listen

To listen for an event you can:

def callback(event, data):
    print(event, data)  # just print event name and data to stdout

ubus.listen(("my_event", callback))

And you need to enter the loop to start to listen:

ubus.loop()

Note that it might not be a good idea to call the callback function recursively.

send

This will send an event to ubus:

ubus.send("my_event", {"some": "data"})

Notes

There are some tests present (‘tests/’ directory). So feel free to check it for some more complex examples. To run the tests you need to have ubus installed and become root:

sudo python setup.py test

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ubus-0.1.1.tar.gz (11.9 kB view details)

Uploaded Source

File details

Details for the file ubus-0.1.1.tar.gz.

File metadata

  • Download URL: ubus-0.1.1.tar.gz
  • Upload date:
  • Size: 11.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.20.1 setuptools/40.6.2 requests-toolbelt/0.8.0 tqdm/4.28.1 CPython/3.6.6

File hashes

Hashes for ubus-0.1.1.tar.gz
Algorithm Hash digest
SHA256 7e57bda989bc35b48c7075d03ec2818226e722bbf1bde138d7e7ea26d462682a
MD5 76eafe297ce04b133652f15f27e201f9
BLAKE2b-256 a4426d098fe93dd3ec6632cc6efb4d16a6ff870727ac7de24c6f3c7ab73ea878

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page