Package: iofog-python-sdk
iofog-python-sdkThis SDK is divided in two parts: client and deploy.InstallationInstall python package:sudopython2-mpipinstalliofog-python-sdkClientThis 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:fromiofog_python_sdk.client.clientimportIoFogClientfromiofog_python_sdk.client.exceptionimportIoFogExceptionfromiofog_python_sdk.client.iomessageimportIoMessagefromiofog_python_sdk.client.listenerimport*Create IoFog client with default settings:try:client=IoFogClient()exceptIoFogExceptionase:# client creation failed, e contains descriptionOr specify host, port, ssl and container id explicitly:try:client=IoFogClient(id='container_id',host='iofog_host',port=6666)exceptIoFogExceptionase:# client creation failed, e contains descriptionREST callsGet list of next unread IoMessages:try:messages=client.get_next_messages()exceptIoFogExceptionase:# some error occurred, e contains descriptionPost 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)exceptIoFogException,e:# some error occurred, e contains descriptionGet 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)exceptIoFogException,e:# some error occurred, e contains descriptionGet container's config:try:config=client.get_config()exceptIoFogException,ex:# some error occurred, ex contains descriptionWebSocket callsTo use websocket connections you should implement listeners as follows:classMyControlListener(IoFogControlWsListener):defon_control_signal(self):# do smth on control signalclassMyMessageListener(IoFogMessageWsListener):defon_receipt(self,message_id,timestamp):# do smth with message receiptdefon_message(self,io_msg):# do smth with new messageAfter 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 utilsConstruct 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()DeployThis module lets you easily communicate with theController REST API.Deploy flow, microservices, agents, etc.Edit microservice configurationEdit flow routingCode snippetsImport iofog deploy clientfromiofog_python_sdk.deploy.create_rest_callimportrest_callfromiofog_python_sdk.deploy.microservice_serviceimportmicroservicesUpdate microservice configcontroller_address=http://localhost:51121/api/v3microservice_service=microservices()defiofog_auth(controller_address,email,password):data={}data["email"]=emaildata["password"]=passwordpost_address="{}/user/login".format(controller_address)jsonResponse=rest_call(data,post_address)auth_token=jsonResponse["accessToken"]returnauth_tokenauth_token=iofog_auth(controller_address,"user@domain.com","myPassword")flow_id=1current_microservice=microservice_service.get_microservice_by_name(controller_address,"my_microservice",flow_id,auth_token)updated_microservice=current_microserviceupdated_microservice.config={"newKey":42}microservice_service.update_microservice(controller_address,updated_microservice,current_microservice.iofogUuid,catalog_id,auth_token)DisclaimerThis 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.Ourgolang SDKis more adapted and modular for communicating with the Controller REST API