44import java .util .List ;
55import java .util .Map ;
66import java .util .concurrent .ConcurrentHashMap ;
7+ import java .util .logging .Level ;
8+ import java .util .logging .Logger ;
79
10+ import picoded .core .conv .ConvertJSON ;
811import picoded .core .struct .GenericConvertHashMap ;
912import picoded .core .struct .GenericConvertList ;
1013import picoded .core .struct .GenericConvertMap ;
@@ -47,10 +50,15 @@ public class ProviderConfig {
4750 //
4851 //--------------------------------------------------------------------------
4952
53+ // Logger to use, for config file warnings
54+ private static final Logger LOGGER = Logger .getLogger (ProviderConfig .class .getName ());
55+
5056 /**
5157 * Load the provider config with provider list
5258 **/
5359 public ProviderConfig (List <Object > inConfigList ) {
60+ providerConfigMap = new HashMap <>();
61+ providerStackMap = new ConcurrentHashMap <>();
5462 loadConfigArray (inConfigList );
5563 }
5664
@@ -63,7 +71,7 @@ public ProviderConfig(List<Object> inConfigList) {
6371 /**
6472 * Stores the internal config mapping by its name
6573 **/
66- protected final Map <String , GenericConvertMap <String , Object >> providerConfigMap = new HashMap <>(); ;
74+ protected final Map <String , GenericConvertMap <String , Object >> providerConfigMap ;
6775
6876 /**
6977 * Loads a configuration array of backend providers for dstack, into the provider map
@@ -116,7 +124,7 @@ protected GenericConvertMap<String, Object> getStackConfig(String name) {
116124 /**
117125 * Stores the respective stack providers
118126 */
119- protected final ConcurrentHashMap <String , CoreStack > providerStackMap = new ConcurrentHashMap <>() ;
127+ protected final ConcurrentHashMap <String , CoreStack > providerStackMap ;
120128
121129 /**
122130 * Get the stack of the provider specified by the name,
@@ -133,7 +141,7 @@ public CoreStack getProviderStack(String name) {
133141 return cache ;
134142 }
135143
136- synchronized (providerStackMap ) {
144+ synchronized (this ) {
137145 // Check the cache again (avoid race condition)
138146 cache = providerStackMap .get (name );
139147 if (cache != null ) {
@@ -143,17 +151,30 @@ public CoreStack getProviderStack(String name) {
143151 // Cache not found, get config to initialize a new stack
144152 GenericConvertMap <String , Object > providerConfig = getStackConfig (name );
145153 if (providerConfig == null ) {
154+ LOGGER .log (Level .SEVERE , "Unknown provider name, config not found : " + name );
146155 throw new IllegalArgumentException ("Unknown provider name, config not found : " + name );
147156 }
148157
158+ // Log the setup
159+ String type = providerConfig .getString ("type" );
160+ LOGGER .info ("Setting DStack provider backend : " + name + " (" + type + ")" );
161+
149162 // Initialization of stack and store into cache
150- cache = initStack (providerConfig .getString ("type" ), providerConfig );
163+ try {
164+ cache = initStack (type , providerConfig );
165+ } catch (Exception e ) {
166+ // Log the error, as this is easily missed into an API error
167+ LOGGER .log (Level .SEVERE , "Error while setting DStack provider : " + name + " (" + type
168+ + ")" , e );
169+ throw new RuntimeException (e );
170+ }
171+
172+ // Save it into cache
151173 providerStackMap .put (name , cache );
152174
153175 // Return result
154176 return cache ;
155177 }
156-
157178 }
158179
159180 /**
0 commit comments