Databricks C++ SDK 0.2.4
Interact with Databricks via an SDK
Loading...
Searching...
No Matches
config.h
Go to the documentation of this file.
1#pragma once
2
3#include <string>
4#include <cstddef>
5
6namespace databricks
7{
8 /**
9 * @brief Core authentication configuration shared across all Databricks features
10 *
11 * This configuration contains the fundamental authentication and connection
12 * settings needed to connect to Databricks. It can be shared across multiple
13 * client types (SQL, Workspace, Delta, etc.).
14 */
16 {
17 std::string host; ///< Databricks workspace URL (e.g., "https://your-workspace.cloud.databricks.com")
18 std::string token; ///< Authentication token (personal access token or OAuth token)
19 int timeout_seconds = 60; ///< Request timeout in seconds (default: 60)
20
21 /**
22 * @brief Load authentication configuration from Databricks CLI profile
23 *
24 * Reads from ~/.databrickscfg file and loads the specified profile section.
25 *
26 * @param profile The profile name to load (default: "DEFAULT")
27 * @return AuthConfig populated from the profile
28 * @throws std::runtime_error if profile is not found or incomplete
29 */
30 static AuthConfig from_profile(const std::string& profile = "DEFAULT");
31
32 /**
33 * @brief Load authentication configuration from environment variables
34 *
35 * Reads from:
36 * - DATABRICKS_HOST or DATABRICKS_SERVER_HOSTNAME
37 * - DATABRICKS_TOKEN or DATABRICKS_ACCESS_TOKEN
38 * - DATABRICKS_TIMEOUT (optional)
39 *
40 * @return AuthConfig populated from environment variables
41 * @throws std::runtime_error if required environment variables are not set
42 */
44
45 /**
46 * @brief Load authentication configuration from all available sources
47 *
48 * Precedence (highest to lowest):
49 * 1. Profile configuration file (~/.databrickscfg) - if complete, stops here
50 * 2. Environment variables - used as fallback if profile missing/incomplete
51 *
52 * @param profile The profile name to try loading (default: "DEFAULT")
53 * @return AuthConfig populated from available sources
54 * @throws std::runtime_error if no valid configuration is found
55 */
56 static AuthConfig from_environment(const std::string& profile = "DEFAULT");
57
58 /**
59 * @brief Validate that all required fields are set
60 * @return true if valid, false otherwise
61 */
62 bool is_valid() const;
63 };
64
65 /**
66 * @brief SQL-specific configuration for Databricks SQL operations
67 *
68 * Contains settings specific to SQL query execution, including the
69 * HTTP path to the SQL warehouse/cluster and ODBC driver configuration.
70 */
71 struct SQLConfig
72 {
73 std::string http_path; ///< HTTP path for SQL warehouse/cluster (e.g., "/sql/1.0/warehouses/abc123")
74 std::string odbc_driver_name = "Simba Spark ODBC Driver"; ///< ODBC driver name (default: Simba Spark ODBC Driver)
75
76 /**
77 * @brief Validate that all required fields are set
78 * @return true if valid, false otherwise
79 */
80 bool is_valid() const;
81 };
82
83 /**
84 * @brief Connection pooling configuration (optional performance optimization)
85 *
86 * Enables connection pooling to improve performance for applications
87 * that execute many queries. Pooling reduces connection overhead by
88 * reusing existing connections.
89 */
91 {
92 bool enabled = false; ///< Enable connection pooling (default: false)
93 size_t min_connections = 1; ///< Minimum connections to maintain in pool (default: 1)
94 size_t max_connections = 10; ///< Maximum connections allowed in pool (default: 10)
95 int connection_timeout_ms = 5000; ///< Timeout for acquiring connection from pool in milliseconds (default: 5000)
96
97 /**
98 * @brief Validate configuration values
99 * @return true if valid, false otherwise
100 */
101 bool is_valid() const;
102 };
103
104 /**
105 * @brief Retry configuration for automatic error recovery
106 *
107 * Configures automatic retry behavior for transient failures such as
108 * connection timeouts, network errors, and rate limits. Uses exponential
109 * backoff to avoid overwhelming the server during retries.
110 *
111 * Example usage:
112 * @code
113 * databricks::RetryConfig retry;
114 * retry.enabled = true;
115 * retry.max_attempts = 5;
116 * retry.initial_backoff_ms = 200;
117 *
118 * auto client = databricks::Client::Builder()
119 * .with_environment_config()
120 * .with_retry(retry)
121 * .build();
122 * @endcode
123 */
125 {
126 bool enabled = true; ///< Enable automatic retries (default: true)
127 size_t max_attempts = 3; ///< Maximum retry attempts (default: 3)
128 size_t initial_backoff_ms = 100; ///< Initial backoff in milliseconds (default: 100ms)
129 double backoff_multiplier = 2.0; ///< Exponential backoff multiplier (default: 2x)
130 size_t max_backoff_ms = 10000; ///< Maximum backoff cap (default: 10s)
131 bool retry_on_timeout = true; ///< Retry on connection timeout (default: true)
132 bool retry_on_connection_lost = true; ///< Retry on connection errors (default: true)
133
134 /**
135 * @brief Validate configuration values
136 * @return true if valid, false otherwise
137 */
138 bool is_valid() const;
139 };
140
141} // namespace databricks
Core authentication configuration shared across all Databricks features.
Definition config.h:16
std::string host
Databricks workspace URL (e.g., "https://your-workspace.cloud.databricks.com")
Definition config.h:17
static AuthConfig from_profile(const std::string &profile="DEFAULT")
Load authentication configuration from Databricks CLI profile.
int timeout_seconds
Request timeout in seconds (default: 60)
Definition config.h:19
static AuthConfig from_env()
Load authentication configuration from environment variables.
static AuthConfig from_environment(const std::string &profile="DEFAULT")
Load authentication configuration from all available sources.
std::string token
Authentication token (personal access token or OAuth token)
Definition config.h:18
bool is_valid() const
Validate that all required fields are set.
Connection pooling configuration (optional performance optimization)
Definition config.h:91
bool enabled
Enable connection pooling (default: false)
Definition config.h:92
size_t max_connections
Maximum connections allowed in pool (default: 10)
Definition config.h:94
bool is_valid() const
Validate configuration values.
size_t min_connections
Minimum connections to maintain in pool (default: 1)
Definition config.h:93
int connection_timeout_ms
Timeout for acquiring connection from pool in milliseconds (default: 5000)
Definition config.h:95
Retry configuration for automatic error recovery.
Definition config.h:125
bool retry_on_timeout
Retry on connection timeout (default: true)
Definition config.h:131
size_t max_attempts
Maximum retry attempts (default: 3)
Definition config.h:127
size_t initial_backoff_ms
Initial backoff in milliseconds (default: 100ms)
Definition config.h:128
bool retry_on_connection_lost
Retry on connection errors (default: true)
Definition config.h:132
bool is_valid() const
Validate configuration values.
bool enabled
Enable automatic retries (default: true)
Definition config.h:126
double backoff_multiplier
Exponential backoff multiplier (default: 2x)
Definition config.h:129
size_t max_backoff_ms
Maximum backoff cap (default: 10s)
Definition config.h:130
SQL-specific configuration for Databricks SQL operations.
Definition config.h:72
std::string odbc_driver_name
ODBC driver name (default: Simba Spark ODBC Driver)
Definition config.h:74
std::string http_path
HTTP path for SQL warehouse/cluster (e.g., "/sql/1.0/warehouses/abc123")
Definition config.h:73
bool is_valid() const
Validate that all required fields are set.