Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 7 Next »

We will use the pubsub Golang library - https://pkg.go.dev/cloud.google.com/go/pubsub which uses a persistent TCP connection under the covers.

A new table for adding PubSub connection details and topics: google_pubsub

name - string column PK

system_key - string column

project_id - string column

credentials - string column (encrypted. Will contain the credentials JSON file)

topics - jsonb column (array of PubSub topics)

There will be endpoints for CRUD. (Details will be added later)

The topics entered during PubSub connection creation will be added as subscribers to the topic tree. The PubSub connection will implement the client interface in core_messaging/broker/client_manager.go. We will use the Publish func to forward messages to Google.

Endpoints:

/admin/{systemKey}/{name}/google-integrations/pub-sub

GET, POST, PUT and DELETE support

POST:

Body required. Body can have iotcore and non iotcore topics. For iotcore topics, type and target is required. type can be 1 for events and 2 for state:

{
    "credentials_map": { // this is the service account json object
        "type": "service_account",
        "project_id": "myprojectid",
        "private_key_id": "blahblahblah",
        "private_key": "<priv_key>",
        "client_email": "a@a.com",
        "client_id": "9126871624161341",
        "auth_uri": "https://accounts.google.com/o/oauth2/auth",
        "token_uri": "https://oauth2.googleapis.com/token",
        "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
        "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/dahjkdhajkd%40dajsdgajdadsad.iam.gserviceaccount.com"
    },
    "project_id": "myprojectid",
    "topics": [
        {"path": "iotdemo"}, // Non iot core topic
        {"path": "/devices/+/events", "type": 1, "target": "performance-testing"}, // iot core topic
        {"path": "/devices/+/events/sub", "type": 1, "target": "performance-testing-sub", "sub_folder": "sub"}, // iot core topic
        {"path": "/devices/+/state", "type": 2, "target": "performance-testing-state"} // iot core topic
    ]
}

pathis the topic that the pubsub client will subscribe internally to the ClearBlade broker. type is the topic type. No type represents a non iotcore topic, 1 is for event and 2 is for state. target is the topic that the pubsub client will publish to in Google PubSub. And sub_folder is for the events topic if it has a subfolder.

GET:

No query support. Admin or Dev

Returns the same object as the POST body

/admin/{systemKey}/google-integrations/pub-sub

GET and DELETE support only. GET gets all pubsub connections for that system and DELETE, deletes all

  • No labels