Native python SDK for Eclipse ioFog development.
Project description
iofog-python-sdk
This SDK is divided in two parts: client and deploy.
Installation
Install python package:
sudo python2 -m pip install iofog-python-sdk
Client
This module lets you easily build an ioElement. It gives you all the functionality to interact with ioFog via Local API. It contains all necessary methods for IoMessage transformation as well.
- send new message to ioFog (post_message)
- fetch next unread messages from ioFog (get_next_messages)
- fetch messages for time period and list of accessible publishers (get_next_messages_from_publishers_within_timeframe)
- get config options (get_config)
- create IoMessage, encode(decode) to(from) raw bytes, marshall(unmarshall) into(from) JSON object (IoMessage class methods)
- connect to ioFog Control Channel via WebSocket (establish_control_ws_connection)
- connect to ioFog Message Channel via WebSocket (establish_message_ws_connection) and publish new message via this channel (post_message_via_socket)
Code snippets:
Import iofog client and additional classes to your project:
from iofog_python_sdk.client.client import IoFogClient
from iofog_python_sdk.client.exception import IoFogException
from iofog_python_sdk.client.iomessage import IoMessage
from iofog_python_sdk.client.listener import *
Create IoFog client with default settings:
try:
client = IoFogClient()
except IoFogException as e:
# client creation failed, e contains description
Or specify host, port, ssl and container id explicitly:
try:
client = IoFogClient(id='container_id', host='iofog_host', port=6666)
except IoFogException as e:
# client creation failed, e contains description
REST calls
Get list of next unread IoMessages:
try:
messages = client.get_next_messages()
except IoFogException as e:
# some error occurred, e contains description
Post new IoMessage to ioFog via REST call:
msg=IoMessage()
msg.infotype="infotype"
msg.infoformat="infoformat"
msg.contentdata="sdkjhwrtiy8wrtgSDFOiuhsrgowh4touwsdhsDFDSKJhsdkljasjklweklfjwhefiauhw98p328946982weiusfhsdkufhaskldjfslkjdhfalsjdf=serg4towhr"
msg.contextdata=""
msg.tag="tag"
msg.groupid="groupid"
msg.authid="authid"
msg.authgroup="authgroup"
msg.hash="hash"
msg.previoushash="previoushash"
msg.nonce="nonce"
try:
receipt = client.post_message(msg)
except IoFogException, e:
# some error occurred, e contains description
Get an array of IoMessages from specified publishers within given timeframe:
query = {
'timeframestart': 1234567890123,
'timeframeend': 1234567890123,
'publishers': ['sefhuiw4984twefsdoiuhsdf', 'd895y459rwdsifuhSDFKukuewf', 'SESD984wtsdidsiusidsufgsdfkh']
}
try:
query_response = client.get_next_messages_from_publishers_within_timeframe(query)
except IoFogException, e:
# some error occurred, e contains description
Get container's config:
try:
config = client.get_config()
except IoFogException, ex:
# some error occurred, ex contains description
WebSocket calls
To use websocket connections you should implement listeners as follows:
class MyControlListener(IoFogControlWsListener):
def on_control_signal(self):
# do smth on control signal
class MyMessageListener(IoFogMessageWsListener):
def on_receipt(self, message_id, timestamp):
# do smth with message receipt
def on_message(self, io_msg):
# do smth with new message
After that you can establish websocket connections:
client.establish_message_ws_connection(MyMessageListener())
client.establish_control_ws_connection(MyControlListener())
Each of those connections will be managed in a separate thread.
After successful connection to message websocket you can send to it:
client.post_message_via_socket(io_msg_instance)
Message utils
Construct IoMessage from JSON(both json string and python dictionary are acceptable):
msg = IoMessage.from_json(json_msg)
IoMessage to JSON:
json_str = io_msg_instance.to_json()
Construct IoMessage from raw bytes:
msg = IoMessage.from_bytearray([0, 4, ...])
Pack IoMessage into bytearray:
msg_bytes = io_msg_instance.to_bytearray()
Deploy
This module lets you easily communicate with the Controller REST API.
- Deploy flow, microservices, agents, etc.
- Edit microservice configuration
- Edit flow routing
Code snippets
Import iofog deploy client
from iofog_python_sdk.deploy.create_rest_call import rest_call
from iofog_python_sdk.deploy.microservice_service import microservices
Update microservice config
controller_address = http://localhost:51121/api/v3
microservice_service = microservices()
def iofog_auth(controller_address, email, password):
data = {}
data["email"] = email
data["password"] = password
post_address = "{}/user/login".format(controller_address)
jsonResponse = rest_call(data, post_address)
auth_token = jsonResponse["accessToken"]
return auth_token
auth_token = iofog_auth(controller_address, "user@domain.com", "myPassword")
flow_id = 1
current_microservice = microservice_service.get_microservice_by_name(controller_address, "my_microservice", flow_id, auth_token)
updated_microservice = current_microservice
updated_microservice.config = {"newKey": 42}
microservice_service.update_microservice(controller_address, updated_microservice, current_microservice.iofogUuid, catalog_id, auth_token)
Disclaimer
This module is very much a Work In Progress. It was first written as a set of helper functions used by a python script to deploy a set of microservices configured using yaml files.
Our golang SDK is more adapted and modular for communicating with the Controller REST API
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file iofog-python-sdk-1.3.0.tar.gz
.
File metadata
- Download URL: iofog-python-sdk-1.3.0.tar.gz
- Upload date:
- Size: 4.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/41.2.0 requests-toolbelt/0.8.0 tqdm/4.35.0 CPython/3.7.2
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 21bc2380e138125032b6c78de8ffca46a0d65aa5c03e381ff284ed9919d506ac |
|
MD5 | 340f0cd224f6fdd7a51cff9e73dad399 |
|
BLAKE2b-256 | 3bde1885766656c063441ab19087c9cb7bcd0ed7c734a5fa9d25a134960dc167 |
File details
Details for the file iofog_python_sdk-1.3.0-py3-none-any.whl
.
File metadata
- Download URL: iofog_python_sdk-1.3.0-py3-none-any.whl
- Upload date:
- Size: 4.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/41.2.0 requests-toolbelt/0.8.0 tqdm/4.35.0 CPython/3.7.2
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9a2405d60a23c1639bddf7994e3e0154846b84676f9c0dda02c7d7901241108a |
|
MD5 | f2171a81f064288591679c9efd912703 |
|
BLAKE2b-256 | 255ab6b977db46f061c88f17c5d32d84a3d8fb6d61016b0673e21ba79feb796a |