Skip to main content

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

Metadata

Release files for iofog-python-sdk 1.3.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for iofog-python-sdk 1.3.0
File Size Uploaded
iofog-python-sdk-1.3.0.tar.gz 4.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for iofog-python-sdk 1.3.0
File Interpreter ABI Platform
iofog_python_sdk-1.3.0-py3-none-any.whl Python 3 none any Details

Total release size: 8.6 kB

Release files / iofog-python-sdk-1.3.0.tar.gz

Download URL iofog-python-sdk-1.3.0.tar.gz
Size 4.1 kB
Tags Source
SHA-256 checksum
How to use checksums
21bc2380e138125032b6c78de8ffca46a0d65aa5c03e381ff284ed9919d506ac
BLAKE2b-256 checksum
How to use checksums
3bde1885766656c063441ab19087c9cb7bcd0ed7c734a5fa9d25a134960dc167
Upload date
Uploaded using Trusted Publishing?
What is 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

Release files / iofog_python_sdk-1.3.0-py3-none-any.whl

Download URL iofog_python_sdk-1.3.0-py3-none-any.whl
Size 4.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
9a2405d60a23c1639bddf7994e3e0154846b84676f9c0dda02c7d7901241108a
BLAKE2b-256 checksum
How to use checksums
255ab6b977db46f061c88f17c5d32d84a3d8fb6d61016b0673e21ba79feb796a
Upload date
Uploaded using Trusted Publishing?
What is 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

Release history Release notifications | RSS feed

This release

1.3.0 This release

2 release files

1.0.0

1 release file

0.0.4

1 release file

0.0.2

1 release file

0.0.1

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page