@@ -49,7 +49,7 @@ use openshell_core::proto_struct::{
4949 deserialize_optional_non_empty_string_list, struct_to_json_value,
5050} ;
5151use openshell_core:: { Config , Error , Result as CoreResult } ;
52- use std:: collections:: { HashMap , HashSet } ;
52+ use std:: collections:: HashMap ;
5353use std:: io:: Read ;
5454use std:: net:: { IpAddr , SocketAddr } ;
5555use std:: path:: { Path , PathBuf } ;
@@ -262,15 +262,15 @@ enum DockerDriverMountConfig {
262262 Bind {
263263 source : String ,
264264 target : String ,
265- #[ serde( default = "default_true" ) ]
265+ #[ serde( default = "driver_mounts:: default_true" ) ]
266266 read_only : bool ,
267267 #[ serde( default ) ]
268268 selinux_label : Option < SelinuxLabel > ,
269269 } ,
270270 Volume {
271271 source : String ,
272272 target : String ,
273- #[ serde( default = "default_true" ) ]
273+ #[ serde( default = "driver_mounts:: default_true" ) ]
274274 read_only : bool ,
275275 #[ serde( default ) ]
276276 subpath : Option < String > ,
@@ -287,17 +287,13 @@ enum DockerDriverMountConfig {
287287 Image {
288288 source : String ,
289289 target : String ,
290- #[ serde( default = "default_true" ) ]
290+ #[ serde( default = "driver_mounts:: default_true" ) ]
291291 read_only : bool ,
292292 #[ serde( default ) ]
293293 subpath : Option < String > ,
294294 } ,
295295}
296296
297- fn default_true ( ) -> bool {
298- true
299- }
300-
301297type WatchStream =
302298 Pin < Box < dyn Stream < Item = Result < WatchSandboxesEvent , Status > > + Send + ' static > > ;
303299
@@ -1845,7 +1841,7 @@ fn validate_docker_driver_mounts(
18451841 mounts : & [ DockerDriverMountConfig ] ,
18461842 enable_bind_mounts : bool ,
18471843) -> Result < ( ) , Status > {
1848- let mut targets = HashSet :: new ( ) ;
1844+ let mut targets = Vec :: with_capacity ( mounts . len ( ) ) ;
18491845 for mount in mounts {
18501846 let target = match mount {
18511847 DockerDriverMountConfig :: Bind { source, target, .. } => {
@@ -1899,14 +1895,10 @@ fn validate_docker_driver_mounts(
18991895 } ;
19001896 driver_mounts:: validate_container_mount_target ( target)
19011897 . map_err ( Status :: failed_precondition) ?;
1902- let normalized_target = driver_mounts:: normalize_mount_target ( target) ;
1903- if !targets. insert ( normalized_target. clone ( ) ) {
1904- return Err ( Status :: failed_precondition ( format ! (
1905- "duplicate docker driver_config mount target '{normalized_target}'"
1906- ) ) ) ;
1907- }
1898+ targets. push ( driver_mounts:: normalize_mount_target ( target) ) ;
19081899 }
1909- Ok ( ( ) )
1900+ driver_mounts:: validate_unique_mount_targets ( targets. iter ( ) . map ( String :: as_str) , "docker" )
1901+ . map_err ( Status :: failed_precondition)
19101902}
19111903
19121904fn validate_optional_positive_integral_i64 (
0 commit comments