Configuration management for Orchestration Pipelines
The configuration management provides centralized configuration capabilities for Orchestration Pipelines. It exposes a protobuf-based gRPC API with a REST interface (via grpc-gateway) and supports multi-tenant environments. The service supports multi-tenant environments and enforces consistent configuration across system, tenant, and asset container scopes.
Configuration resolution model
Configuration values are evaluated using a strict and deterministic precedence order. The system does not merge values across scopes. Resolution order: Asset container settings (project-level override) Tenant settings (default values for the tenant) Built-in system defaults The first defined value in this sequence is returned and used.
Example: Resolution of default_pipeline_job_name_suffix
- If the asset container defines a value, that value is returned.
- If the asset container does not define a value and the tenant defines one, the tenant value is returned.
- If neither defines a value, the system returns the default:
".Pipeline job"
Tenant-Level Resolution
Tenant settings do not inherit from other tenants or systems:
- If a value is explicitly stored, that value is returned.
- If no value is stored, a predefined default is returned.
Default values and initial system state
For a new installation, the system initializes with predefined defaults. No tenant-specific overrides exist at this stage. The following defaults apply:
default_pipeline_job_name_suffix = ".Pipeline job"nested_job_execution_mode = INDEPENDENT_JOBS_MODE
Default asset container configuration:
{
"allowed_operational_scope": "WIDE_SCOPE",
"resource_reference_type": "EXACT_BY_ID",
"pipeline_save_mode": "AUTO_SAVE",
"jobs_deletion_mode": "LEAVE_ORPHAN_JOBS",
"runner_type": "PIPELINE_RUNNER",
"nested_job_execution_mode": "INDEPENDENT_JOBS_MODE",
"default_pipeline_job_name_suffix": ".Pipeline job"
}
API endpoints for retrieving configuration data
The service exposes REST endpoints that mirror the underlying gRPC API.
Retrieve tenant settings
GET /apis/v1/tenant_settings
Returns all tenant-level configuration values.
Retrieve asset container settings
GET /apis/v1/asset_container_settings?project_id=<project_id>
Returns configuration for the specified asset container. If a setting is not defined at this level, the effective value must be resolved using the defined hierarchy.
Command-line interface for managing tenant settings
Tenant settings are available through the cpdctl CLI starting from version 1.8.227.
Retrieving tenant settings using CLI
cpdctl pipeline get-settings [setting_name_or_prefix]
Behavior:
- If no argument is provided, the command returns all tenant settings.
- If a prefix is provided, the command returns all matching settings.
- If a full setting name is provided, the command returns a single value.
Examples:
cpdctl pipeline get-settings
cpdctl pipeline get-settings default_pipeline_settings
cpdctl pipeline get-settings default_pipeline_settings.appearance.auto_save_frequency
You can use the optional flag --description, which displays setting descriptions in addition to values.
Updating tenant settings using CLI
Use following command if you want to update tenant settings:
cpdctl pipeline update-settings [setting_name_or_prefix] value
The following formats are supported:
- Inline JSON:
cpdctl pipeline update-settings \
'{"default_asset_container_settings":{"allowed_operational_scope":"WIDE_SCOPE"}}'
- File-based input:
cpdctl pipeline update-settings @tenant-settings.json
- Scoped update using a file:
cpdctl pipeline update-settings default_pipeline_settings @default-pipeline-settings.json
Updating a single setting with multiple values
If you want to update a single setting, run this command:
cpdctl pipeline update-settings \
default_pipeline_settings.execution_cache.caching_conditions \
RETRY_ON_FAILURE,PIPELINE_UNCHANGED,INPUTS_UNCHANGED
Validation and compatibility
Validation Rules
Each setting enforces strict validation rules:
- Enumerated settings accept only predefined values.
- List-based settings accept only supported list members.
- Invalid input results in a rejected request.
The service does not apply partial updates. Invalid payloads are rejected without modifying existing values.
Compatibility and Extensibility
The service supports backward-compatible extensions:
- New settings can be introduced without impacting existing clients.
- Clients ignore unknown fields returned by the API.
- Protobuf schema evolution ensures compatibility across versions.