Integrations
15 min
the integrations module manages cloud connector instances, subscriptions (topics), and object storage on litmus edge imports the integrations surface lives under litmussdk integrations common \# instances and topics (rest api, 3 x and 4 0 x) from litmussdk integrations common import integrations, topics, dashboard \# graphql streaming subscriptions (4 0 x only) from litmussdk integrations common import gql streaming \# object storage (4 0 x only) from litmussdk integrations common import object storage note graphql and object storage functions raise unsupportedversionerror when called against a 3 x device providers listing providers providers = integrations cloud providers() # list\[dict] provider = next(p for p in providers if p\["name"] == "rest") provider id = provider\["id"] provider schema schema = integrations cloud config schema(provider id) tag schema = integrations cloud config tag schema(provider id) description = integrations cloud config description(provider id) instances instances = integrations cloud connector instances() instance = next(i for i in instances if i\["config"]\["name"] == "my rest connector") instance id = instance\["instanceid"] \# create instance = integrations cloud connector create( provider id=provider id, provider config={"name" "my rest connector", "url" "https //example com/api"}, ) instance id = instance\["instanceid"] \# read details details = integrations cloud connector instance details(instance id) \# enable / disable integrations cloud connector enable disable(instance id, enable=true) \# update integrations cloud connector instance update( integration instance id=instance id, update body={"config" {"name" " ", "url" " "}}, ) \# delete integrations cloud connector instance delete(instance id) \# purge persistence layer integrations purge persistence layer(instance id) topics (rest api, 3 x and 4 0 x) topics define data flows outbound = local > remote inbound = remote > local topics = topics list topics(instance id) topic = topics create topic( integration instance id=instance id, is local to remote=true, local name="plant/pump/01/pressure", remote name="pump pressure", enabled=true, description="pump pressure", config={}, ) topic id = topic\["topicid"] topics update topic( integration instance id=instance id, integration topic id=topic id, local name="plant/pump/01/pressure", remote name="pump pressure v2", is local to remote=true, enabled=true, ) topics enable disable topic(instance id, topic id, enable=true) topics enable disable multiple topics(instance id, \[topic id 1, topic id 2], enable=false) topics remove topic(instance id, topic id) topics delete multiple topics(instance id, \[topic id 1, topic id 2]) \# import from devicehub topics import from dh(instance id, device id=device id, wildcard=false) \# csv export / import csv text = topics download csv(instance id) topics upload csv(instance id, file path="/path/to/topics csv") subscriptions (graphql api, 4 0 x only) subs = gql streaming list subscriptions(instance id) gql streaming create subscriptions( instance id=instance id, subscriptions=\[{ "localname" "plant/pump/01/pressure", "remotename" "pump pressure", "islocaltoremote" true, "enabled" true, "description" "", "config" {}, }], ) \# each entry in update must include topicid gql streaming update subscriptions( instance id=instance id, subscriptions=\[{"topicid" topic id, "remotename" "pump pressure v2", }], ) gql streaming enable subscriptions(instance id, \[topic id]) gql streaming disable subscriptions(instance id, \[topic id]) gql streaming delete subscriptions(instance id, \[topic id]) \# bulk gql streaming enable all topics(instance id) gql streaming disable all topics(instance id) gql streaming delete all topics(instance id) \# bulk import from other services gql streaming import topics( instance id=instance id, device hub=\[{"deviceid" device id, "tagids" \[tag id]}], digital twins=\[{"instanceid" dt instance id}], analytics=\[{"processorid" proc id}], ) \# instance management (graphql) instances = gql streaming list instances gql() gql streaming update instance gql(instance id, config="{ }", error logging=false) result = gql streaming clear instance persistence layer(instance id) gql streaming delete instance gql(instance id) \# csv csv = gql streaming download subscriptions csv(\[instance id]) object storage (4 0 x only) status = object storage get cloud storage availability() providers = object storage get cloud storage providers() jobs = object storage get cloud storage jobs() dashboard stats stats = dashboard all stats(instance id) dashboard mean disk usage(instance id) dashboard persistence size(instance id) dashboard live count(instance id) dashboard drop count(instance id) prometheus metrics metrics = integrations prometheus metrics() # str, raw prometheus exposition format license copyright (c) litmus automation inc