th2_common
Project description
th2 common library (Python)
Installation
pip install th2-common
This package can be found on PyPI.
Usage
First things first, you need to import CommonFactory
class:
from th2_common.schema.factory.common_factory import CommonFactory
Then you create an instance of imported class, choosing one of the options:
-
Create factory with configs from default path (
/var/th2/config/*
):factory = CommonFactory()
-
Create factory with configs from specified directory path (
path/*
):factory = CommonFactory(config_path=...)
-
Create factory with configs from specified file paths:
factory = CommonFactory(rabbit_mq_config_filepath=..., mq_router_config_filepath=..., grpc_router_config_filepath=..., cradle_config_filepath=..., custom_config_filepath=...)
-
Create factory with configs from command line arguments (
sys.argv
):factory = CommonFactory.create_from_arguments()
-
Create factory with configs from specified arguments:
factory = CommonFactory.create_from_arguments(args)
You can use one of the following groups of arguments. Arguments from different groups cannot be used together.
The first group:
- --rabbitConfiguration - path to json file with RabbitMQ configuration
- --messageRouterConfiguration - path to json file with configuration for MessageRouter
- --grpcRouterConfiguration - path to json file with configuration for GrpcRouter
- --cradleConfiguration - path to json file with configuration for Cradle
- --customConfiguration - path to json file with custom configuration
- --dictionariesDir - path to directory which contains files with encoded dictionaries
- --prometheusConfiguration - path to json file with configuration for prometheus metrics server
- --boxConfiguration - path to json file with boxes configuration and information
- -c/--configs - folder with json files for schemas configurations with special names:
- rabbitMq.json - configuration for RabbitMQ
- mq.json - configuration for MessageRouter
- grpc.json - configuration for GrpcRouter
- cradle.json - configuration for cradle
- custom.json - custom configuration
The second group:
- --namespace - the namespace in Kubernetes to search config maps
- --boxName - the name of the target th2 box placed in the specified Kubernetes namespace
- --contextName - the context name to search connect parameters in Kube config
Their usage is discovered further.
-
Create factory with a namespace in Kubernetes and the name of the target th2 box from Kubernetes:
factory = CommonFactory.create_from_kubernetes(namespace, box_name)
It also can be called by using
create_from_arguments(args)
with arguments--namespace
and--boxName
. -
Create factory with a namespace in Kubernetes, the name of the target th2 box from Kubernetes and the name of context to choose the context from Kube config:
var factory = CommonFactory.create_from_kubernetes(namespace, boxName, contextName);
It also can be called by using
create_from_arguments(args)
with arguments--namespace
,--boxName
and--contextName
. ContextName parameter isNone
by default; if it is set toNone
, the current context will not be changed.
Requirements for creatring factory with Kubernetes
-
It is necessary to have Kubernetes configuration written in ~/.kube/config. See more on kubectl configuration here.
-
It is necessary to have environment variables
CASSANDRA_PASS
andRABBITMQ_PASS
to use configs fromcradle.json
andrabbitMQ.json
as the passwords are not stored there explicitly. -
Also note that
generated_configs
directory will be created to store.json
files with configs from Kubernetes. Those files are overridden whenCommonFactory.create_from_kubernetes(namespace, box_name)
is invoked again.
After that you can get various Routers
through factory
properties:
message_parsed_batch_router = factory.message_parsed_batch_router
message_raw_batch_router = factory.message_raw_batch_router
event_batch_router = factory.event_batch_router
message_parsed_batch_router
is working with MessageBatch
message_raw_batch_router
is working with RawMessageBatch
event_batch_router
is working with EventBatch
See th2-grpc-common for details.
With router
created, you can subscribe to pins (specifying callback function) or send data that router works with:
router.subscribe(callback) # subscribe to only one pin
router.subscribe_all(callback) # subscribe to one or several pins
router.send(message) # send to only one pin
router.send_all(message) # send to one or several pins
You can do these actions with extra pin attributes in addition to default ones.
router.subscribe(callback, attrs...) # subscribe to only one pin
router.subscribe_all(callback, attrs...) # subscribe to one or several pins
router.send(message, attrs...) # send to only one pin
router.send_all(message, attrs...) # send to one or several pins
Default attributes are:
message_parsed_batch_router
- Subscribe:
subscribe
,parsed
- Send:
publish
,parsed
- Subscribe:
message_raw_batch_router
- Subscribe:
subscribe
,raw
- Send:
publish
,raw
- Subscribe:
event_batch_router
- Subscribe:
subscribe
,event
- Send:
publish
,event
- Subscribe:
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Hashes for th2_common-3.0.5.dev764366329.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 11136a60850ed5deb2391fbf147a8363d89826a3d5c2824a44f446e338e07409 |
|
MD5 | 65beb1db915478e7bb72dfcb717bf035 |
|
BLAKE2b-256 | 4964fef4b5e01fcfe92ff858c47c71129bf73c36257b08d7883cddd6e6d6a3a7 |