@@ -781,6 +781,11 @@ impl KubernetesComputeDriver {
781781 validate_gpu_request ( gpu_requirements) . map_err ( |status| {
782782 KubernetesDriverError :: InvalidArgument ( status. message ( ) . to_string ( ) )
783783 } ) ?;
784+
785+ // Validate sandbox name against Kubernetes naming requirements
786+ validate_kubernetes_dns1123_label ( & sandbox. name , "sandbox name" )
787+ . map_err ( KubernetesDriverError :: InvalidArgument ) ?;
788+
784789 let name = sandbox. name . as_str ( ) ;
785790 info ! (
786791 sandbox_id = %sandbox. id,
@@ -5625,4 +5630,18 @@ mod tests {
56255630 let storage = & vct[ 0 ] [ "spec" ] [ "resources" ] [ "requests" ] [ "storage" ] ;
56265631 assert_eq ! ( storage, DEFAULT_WORKSPACE_STORAGE_SIZE ) ;
56275632 }
5633+
5634+ #[ test]
5635+ fn sandbox_name_validation_accepts_valid_dns_labels ( ) {
5636+ assert ! ( validate_kubernetes_dns1123_label( "my-sandbox" , "sandbox name" ) . is_ok( ) ) ;
5637+ assert ! ( validate_kubernetes_dns1123_label( "test123" , "sandbox name" ) . is_ok( ) ) ;
5638+ assert ! ( validate_kubernetes_dns1123_label( "123abc" , "sandbox name" ) . is_ok( ) ) ;
5639+ }
5640+
5641+ #[ test]
5642+ fn sandbox_name_validation_rejects_invalid_dns_labels ( ) {
5643+ assert ! ( validate_kubernetes_dns1123_label( "my_sandbox" , "sandbox name" ) . is_err( ) ) ;
5644+ assert ! ( validate_kubernetes_dns1123_label( "MySandbox" , "sandbox name" ) . is_err( ) ) ;
5645+ assert ! ( validate_kubernetes_dns1123_label( "dotted.name" , "sandbox name" ) . is_err( ) ) ;
5646+ }
56285647}
0 commit comments