@@ -19,26 +19,53 @@ def register(provider, klass)
1919 registry [ provider ] = klass
2020 end
2121
22- def build ( connection_config :, directory_key :, root_dir :, min_size : nil , max_size : nil )
22+ def build ( connection_config :, directory_key :, root_dir :, resource_type : nil , min_size : nil , max_size : nil )
2323 provider = connection_config [ :provider ]
2424 raise 'Missing connection_config[:provider]' if provider . nil?
25+ raise 'Missing resource_type' if resource_type . nil?
2526
2627 impl_class = registry [ provider ]
2728 raise "No storage CLI client registered for provider #{ provider } " unless impl_class
2829
29- impl_class . new ( connection_config :, directory_key :, root_dir :, min_size :, max_size :)
30+ impl_class . new ( connection_config :, directory_key :, root_dir :, resource_type : , min_size :, max_size :)
3031 end
3132 end
3233
33- def initialize ( connection_config :, directory_key :, root_dir :, min_size : nil , max_size : nil )
34+ def initialize ( connection_config :, directory_key :, resource_type : , root_dir :, min_size : nil , max_size : nil )
3435 @cli_path = cli_path
3536 @directory_key = directory_key
37+ @resource_type = resource_type . to_s
3638 @root_dir = root_dir
3739 @min_size = min_size || 0
3840 @max_size = max_size
39- config = build_config ( connection_config )
40- @config_file = write_config_file ( config )
4141 @fork = connection_config . fetch ( :fork , false )
42+
43+ file_path = case @resource_type
44+ when 'droplets' , 'buildpack_cache'
45+ VCAP ::CloudController ::Config . config . get ( :storage_cli_config_file_droplets )
46+ when 'buildpacks'
47+ VCAP ::CloudController ::Config . config . get ( :storage_cli_config_file_buildpacks )
48+ when 'packages'
49+ VCAP ::CloudController ::Config . config . get ( :storage_cli_config_file_packages )
50+ when 'resource_pool'
51+ VCAP ::CloudController ::Config . config . get ( :storage_cli_config_file_resource_pool )
52+ else
53+ raise BlobstoreError . new ( "Unknown resource_type: #{ @resource_type } " )
54+ end
55+
56+ unless file_path && File . file? ( file_path ) && File . readable? ( file_path )
57+ raise BlobstoreError . new ( "storage-cli config file not found or not readable at: #{ file_path . inspect } " )
58+ end
59+
60+ begin
61+ VCAP ::CloudController ::YAMLConfig . safe_load_file ( file_path )
62+ rescue => e
63+ raise BlobstoreError . new ( "Failed to load storage-cli config at #{ file_path } : #{ e . message } " )
64+ end
65+
66+ @config_file = file_path
67+ logger . info ( 'storage_cli_config_selected' , resource_type : @resource_type , path : @config_file )
68+
4269 end
4370
4471 def local?
0 commit comments