@@ -75,27 +75,48 @@ get_databricks_config_from_env <- function() {
7575}
7676
7777get_databricks_config <- function (profile ) {
78- config <- if (! is.na(profile )) {
79- get_databricks_config_for_profile(profile )
80- } else if (exists(" spark.databricks.token" ) && exists(" spark.databricks.api.url" )) {
78+
79+ # If a profile is provided, fetch its configuration
80+ if (! is.na(profile )) {
81+ config <- get_databricks_config_for_profile(profile )
82+ if (databricks_config_is_valid(config )) {
83+ return (config )
84+ }
85+ }
86+
87+ # Check for environment variables
88+ config <- get_databricks_config_from_env()
89+ if (databricks_config_is_valid(config )) {
90+ return (config )
91+ }
92+
93+ # Check 'DEFAULT' profile
94+ config <- tryCatch({
95+ get_databricks_config_for_profile(" DEFAULT" )
96+ }, error = function (e ) {
97+ # On error assume known invalid config
98+ list (host = NA , token = NA , username = NA , password = NA )
99+ })
100+ if (databricks_config_is_valid(config )) {
101+ return (config )
102+ }
103+
104+ # When in Databricks (done last so other methods are explicit overrides)
105+ if (exists(" spark.databricks.token" , envir = .GlobalEnv ) &&
106+ exists(" spark.databricks.api.url" , envir = .GlobalEnv )) {
81107 config_vars <- list (
82108 host = get(" spark.databricks.api.url" , envir = .GlobalEnv ),
83109 token = get(" spark.databricks.token" , envir = .GlobalEnv ),
84110 insecure = Sys.getenv(config_variable_map $ insecure , " False" )
85111 )
86- new_databricks_config(config_source = " db_dynamic" , config_vars = config_vars )
87- } else {
88- config <- get_databricks_config_from_env()
112+ config <- new_databricks_config(config_source = " db_dynamic" , config_vars = config_vars )
89113 if (databricks_config_is_valid(config )) {
90- config
91- } else {
92- get_databricks_config_for_profile(" DEFAULT" )
114+ return (config )
93115 }
94116 }
95- if (! databricks_config_is_valid(config )) {
96- stop(" Could not find valid Databricks configuration." )
97- }
98- config
117+
118+ # If no valid configuration is found by this point, raise an error
119+ stop(" Could not find valid Databricks configuration." )
99120}
100121
101122# ' Get information from Databricks Notebook environment
0 commit comments