a Python client for the OpenBTS NodeManager, providing access to several components in the OpenBTS application suite: SMQueue, SIPAuthServe, and OpenBTS itself.
3edca32
)bc292b2
)3affcd7
)fae5611
)$ pip install openbts
import openbts
# read a config value from SMQueue
smqueue_connection = openbts.components.SMQueue()
response = smqueue_connection.read_config('Bounce.Code')
print response.data['value']
# 101
# update an SIPAuthServe config value
sipauthserve_connection = openbts.components.SIPAuthServe()
response = sipauthserve_connection.update_config('Log.Alarms.Max', 12)
print response.code
# 204
# get realtime OpenBTS monitoring data
openbts_connection = openbts.components.OpenBTS()
response = openbts_connection.monitor()
print response.data['noiseRSSI']
# -67
# view all subscriber data
response = sipauthserve_connection.get_subscribers()
print len(response.data)
# 78
# view tmsis entries
response = openbts_connection.tmsis()
print len(response)
# 214
# create a new subscriber by name, IMSI, MSIDSN and optional ki
subscriber = ('ada', 0123, 4567, 8901)
response = sipauthserve_connection.create_subscriber(*subscriber)
print response.code
# 200
see additional examples in integration_tests.py
MIT
gprs list
get_load
handles gprs utilization percentages expressed in scientific notationcomponents.OpenBTS.get_noise
components.OpenBTS.get_load
RCVTIME0
on zmq socketsenvoy
to setup.py
openbts_
get_numbers
returns an empty list instead of raising if no number is found for an IMSIget_subscriber
and create_subscriber
for the latest NMcaller_id
in get / update / delete operationsget_subscribers
returns account_balance
info for each subscriberaccount_balance
create_subscriber
from adding duplicate IMSIsget_imsi_from_number
methodrun unit tests with nose
after installing the required modules:
$ pip install -r requirements.txt
$ nosetests openbts --with-coverage --cover-package=openbts
We have quite a few similar unit tests between components.
Many could be written against openbts.core.BaseComponent
, as the components
all inherit from this single class. But it seems better to individually
inspect the functionality of each class in openbts.components
. Anyway,
onward..
To run the integration tests, you'll need an OpenBTS instance running on the same machine as the testing script. The test will modify real system parameters, so run it with caution. Or, better yet, run it against a system not in production.
$ nosetests integration_tests
$ nosetests integration_tests:SIPAuthServe
$ nosetests integration_tests:SIPAuthServe.test_get_all_subscribers
you need a ~/.pypirc
like this:
[distutils]
index-servers =
pypi
[pypi]
repository: https://pypi.python.org/pypi
username: yosemitebandit
password: mhm
bump the versions in setup.py
and here in the readme, then run:
$ git tag 0.0.1 -m 'openbts-python v0.0.1'
$ git push origin master --tags
$ python setup.py sdist upload -r pypi