Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branch 'dev' into feature/update_lco_facility
- Loading branch information
Showing
23 changed files
with
936 additions
and
20 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,78 @@ | ||
Publish and Subscribe to a Kafka Stream | ||
--------------------------------------- | ||
|
||
Publishing data to a stream and subscribing to a stream are handled independently and we describe each below. | ||
|
||
|
||
Publish Data to a Kafka Topic | ||
############################# | ||
|
||
TOM Toolkit supports publishing data to a Kafka stream such as `Hermes <https://hermes.lco.global>`_ (an interface to | ||
`HOPSKOTCH <https://hop.scimma.org>`_) and `GCNClassicOverKafka <https://gcn.nasa.gov>`_. | ||
|
||
When sharing photometry data via Hermes, the TOM publishes the data to be shared to a topic on the HOPSKOTCH | ||
Kafka stream. At this time, only photometry data is supported. | ||
|
||
|
||
Configuring your TOM to Publish Data to a stream: | ||
************************************************* | ||
|
||
You will need to add a ``DATA_SHARING`` configuration dictionary to your ``settings.py`` that gives the credentials | ||
for the various streams with which you wish to share data. | ||
|
||
.. code:: python | ||
# Define the valid data sharing destinations for your TOM. | ||
DATA_SHARING = { | ||
'hermes': { | ||
'DISPLAY_NAME': os.getenv('HERMES_DISPLAY_NAME', 'Hermes'), | ||
'BASE_URL': os.getenv('HERMES_BASE_URL', 'https://hermes.lco.global/'), | ||
'CREDENTIAL_USERNAME': os.getenv('SCIMMA_CREDENTIAL_USERNAME', | ||
'set SCIMMA_CREDENTIAL_USERNAME value in environment'), | ||
'CREDENTIAL_PASSWORD': os.getenv('SCIMMA_CREDENTIAL_PASSWORD', | ||
'set SCIMMA_CREDENTIAL_PASSWORD value in environment'), | ||
'USER_TOPICS': ['hermes.test', 'tomtoolkit.test'] | ||
}, | ||
} | ||
Subscribe to a Kafka Topic | ||
########################## | ||
|
||
TOM Toolkit allows a TOM to subscribe to a topic on a Kafka stream, ingesting messages from that topic and handling the data. | ||
This could involve simply logging the message or extracting the data from the message and saving it if it is properly formatted. | ||
|
||
Configuring your TOM to subscribe to a stream: | ||
********************************************** | ||
|
||
First you will need to add ``tom_alertstreams`` to your list of ``INSTALLED_APPS`` in your ``settings.py``. | ||
|
||
.. code:: python | ||
INSTALLED_APPS = [ | ||
... | ||
'tom_alertstreams', | ||
] | ||
Then you will need to add an ``ALERT_STREAMS`` configuration dictionary to your ``settings.py``. This gives the credentials | ||
for the various streams to which you wish to subscribe. Additionally, the ``TOPIC_HANDLERS`` section of the stream ``OPTIONS`` | ||
will include a list of handlers for each topic. | ||
|
||
Some alert handlers are included as examples. Below we demonstrate how to connect to a Hermes Topic. You'll want to check | ||
out the ``tom-alertstreams`` `README <https://github.com/TOMToolkit/tom-alertstreams>`_ for more details. | ||
|
||
.. code:: python | ||
ALERT_STREAMS = [ | ||
{ | ||
'ACTIVE': True, | ||
'NAME': 'tom_alertstreams.alertstreams.hopskotch.HopskotchAlertStream', | ||
'OPTIONS': { | ||
'URL': 'kafka://kafka.scimma.org/', | ||
'USERNAME': os.getenv('SCIMMA_CREDENTIAL_USERNAME', 'set SCIMMA_CREDENTIAL_USERNAME value in environment'), | ||
'PASSWORD': os.getenv('SCIMMA_CREDENTIAL_PASSWORD', 'set SCIMMA_CREDENTIAL_USERNAME value in environment'), | ||
'TOPIC_HANDLERS': { | ||
'tomtoolkit.test': 'tom_dataproducts.alertstreams.hermes.hermes_alert_handler', | ||
}, | ||
}, | ||
}, | ||
] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,32 @@ | ||
Sharing Data with Other TOMs | ||
############################ | ||
|
||
TOM Toolkit does not yet support direct sharing between TOMs, however we hope to add this functionality soon. | ||
|
||
|
||
.. Configuring your TOM to submit data to another TOM: | ||
.. *************************************************** | ||
.. | ||
.. You will need to add a ``DATA_SHARING`` configuration dictionary to your ``settings.py`` that gives the credentials | ||
.. for the various TOMs with which you wish to share data. | ||
.. | ||
.. .. code:: python | ||
.. | ||
.. # Define the valid data sharing destinations for your TOM. | ||
.. DATA_SHARING = { | ||
.. 'tom-demo-dev': { | ||
.. 'DISPLAY_NAME': os.getenv('TOM_DEMO_DISPLAY_NAME', 'TOM Demo Dev'), | ||
.. 'BASE_URL': os.getenv('TOM_DEMO_BASE_URL', 'http://tom-demo-dev.lco.gtn/'), | ||
.. 'USERNAME': os.getenv('TOM_DEMO_USERNAME', 'set TOM_DEMO_USERNAME value in environment'), | ||
.. 'PASSWORD': os.getenv('TOM_DEMO_PASSWORD', 'set TOM_DEMO_PASSWORD value in environment'), | ||
.. }, | ||
.. 'localhost-tom': { | ||
.. # for testing; share with yourself | ||
.. 'DISPLAY_NAME': os.getenv('LOCALHOST_TOM_DISPLAY_NAME', 'Local'), | ||
.. 'BASE_URL': os.getenv('LOCALHOST_TOM_BASE_URL', 'http://127.0.0.1:8000/'), | ||
.. 'USERNAME': os.getenv('LOCALHOST_TOM_USERNAME', 'set LOCALHOST_TOM_USERNAME value in environment'), | ||
.. 'PASSWORD': os.getenv('LOCALHOST_TOM_PASSWORD', 'set LOCALHOST_TOM_PASSWORD value in environment'), | ||
.. } | ||
.. | ||
.. } | ||
.. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
# Generated by Django 4.1 on 2022-10-26 21:16 | ||
|
||
from django.db import migrations, models | ||
|
||
|
||
class Migration(migrations.Migration): | ||
|
||
dependencies = [ | ||
('tom_alerts', '0004_auto_20210204_2300'), | ||
] | ||
|
||
operations = [ | ||
migrations.CreateModel( | ||
name='AlertStreamMessage', | ||
fields=[ | ||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), | ||
('topic', models.CharField(help_text='The destination or source of sharing for the message.', max_length=500, verbose_name='Message Topic')), | ||
('message_id', models.CharField(help_text='An external message identifier that can be used to locate the message within the given topic.', max_length=50, verbose_name='Message ID')), | ||
('date_shared', models.DateTimeField(auto_now_add=True, help_text='The date on which the message is shared. (Date created by default.)', verbose_name='Date Shared')), | ||
('exchange_status', models.CharField(default='', help_text='Whether this message was sent or received.', max_length=10, verbose_name='Exchange Status')), | ||
], | ||
), | ||
] |
18 changes: 18 additions & 0 deletions
18
tom_alerts/migrations/0006_alter_alertstreammessage_exchange_status.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
# Generated by Django 4.1 on 2022-10-26 23:57 | ||
|
||
from django.db import migrations, models | ||
|
||
|
||
class Migration(migrations.Migration): | ||
|
||
dependencies = [ | ||
('tom_alerts', '0005_alertstreammessage'), | ||
] | ||
|
||
operations = [ | ||
migrations.AlterField( | ||
model_name='alertstreammessage', | ||
name='exchange_status', | ||
field=models.CharField(choices=[('published', 'Published'), ('ingested', 'Ingested')], help_text='Whether this message was sent or received.', max_length=10, verbose_name='Exchange Status'), | ||
), | ||
] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Empty file.
Oops, something went wrong.