Bootstrapper

Gluesync Bootstrapper is a configuration tool for setting up database schema mappings between source and target systems in an automated way, bypassing the need to manually configure entities in the Gluesync Core Hub Web UI.
This project is Open Source
Overview
The Bootstrapper allows you to define table structures, column mappings, and connection properties using YAML configuration files, enabling precise control over how data is transferred and transformed across different database systems. This automation tool integrates directly with the Core Hub API to streamline entity configuration.
Key Features
-
Real-time Data Synchronization
-
Automated synchronization between source and target databases
-
Support for multiple database systems (MS SQL Server, Couchbase, etc.)
-
Configurable filtering and transformation rules
-
-
Schema Configuration
-
Table structure mapping
-
Column mapping with type safety
-
Custom document key generation
-
TTL (Time To Live) management for target documents
-
Schedules for recurring jobs (via Chronos)
-
…and much more
-
-
Pipeline Management
-
Flexible polling intervals and batch processing
-
Automatic agent configuration
-
Direct Core Hub API integration
-
Configuration
The Bootstrapper works with two primary configuration files:
-
Schema configuration (
table-list-template.yaml
) -
Agent configuration (
config.json
)
Schema Configuration
The schema configuration defines how tables should be synchronized and transformed:
dbo: # Source schema
target: public # Target schema
customProperties: # Custom properties for both source and target
source: # Source custom properties
maxItemsCountPerIteration: 1000
pollingIntervalMilliseconds: 100
target: # Target custom properties
ttlValue: 10000000
tables: # Tables to be synchronized
whitelist: # Allowed tables to be synchronized, empty list means all tables
- DRIVERS
- VEHICLES
blacklist: # Forbidden tables to be synchronized, empty list means no restrictions
- TEST
Table Configuration
Each table can be configured with detailed mapping information:
DRIVERS:
keys:
- ID
documentKey:
prefix: "TESTPREFIX"
suffix: "TESTSUFFIX"
separator: "-"
keys:
- ID
- LAST_NAME
name: drivers
columns:
- FIRST_NAME: "FIRST_NAME"
- LAST_NAME: "LAST_NAME"
- AGE: "AGE"
- EMAIL: "EMAIL"
Usage
Getting Started
Before using the Bootstrapper, you need:
-
A running Gluesync deployment with Core Hub accessible
-
Authentication credentials for the Core Hub API
-
Proper network connectivity between source and target systems
Authentication
To use the tool, you need to get a valid authentication token from the Core Hub API. This can be done in several ways:
-
By logging in to the Core Hub Web UI and copying the token from the browser’s cookies
-
By using an HTTP client to request a token
curl -X POST https://<corehub-url>/authentication/login -H "Content-Type: application/json" -d '{"username":"<username>","password":"<password>"}'
Main Script Usage
The primary entry point is the main.py
script which creates a new pipeline and configures the agents:
python main.py --config <path_to_config> --token <auth_token> [--skip-errors] [--chunk-size <number>]
Alternatively, you can use environment variables:
# Set environment variables
export FILE_CONF_PATH="./my-config.json"
export CORE_HUB_URL="https://my-corehub:1717"
export DEFAULT_PASSWORD="my-secure-password"
export CREATE_ENTITIES_FROM_SCHEMA="true"
export TARGET_SCHEMA="public"
export SOURCE_TYPE="mssql"
export TARGET_TYPE="couchbase"
# Run the script
python main.py
Creating Entities
To create entities in the Core Hub based on your YAML configuration:
python create_all_entities.py --pipeline <pipeline_id> --source-schema <source_schema> --target-schema <target_schema> --source-type <source_agent_type> --target-type <target_agent_type> --yaml-file <path_to_yaml_config> --token <auth_token> [--skip-errors] [--chunk-size <number>]
Best Practices
-
Store configuration files in version control
-
Create different configuration files for development, staging, and production environments
-
Validate configurations before applying them to production systems
-
Use consistent naming conventions for schemas, tables, and columns
-
Document custom transformations and rules
-
Test configurations thoroughly before deployment
Troubleshooting
Common Issues
Issue | Possible Cause | Resolution |
---|---|---|
Authentication failures |
Invalid or expired token |
Generate a new authentication token |
Entity creation errors |
Incorrect schema configuration |
Verify YAML configuration format and structure |
Connection issues |
Network connectivity problems |
Check network settings and firewall rules |
Type mapping errors |
Incompatible data types between source and target |
Verify column type definitions in the YAML configuration |